Hi Mark,

Thanks for your message and sorry for the delay but it took me some time to understand your message and to try few things.
I think one would say that that is not a bug. I looked at the details of arima.sim ( using debug(arima.sim) ) and there are two different series that are created inside the function. one is called innov and the other is start.innov. start.innov is
used to create a burn in period for the constructed series.
I am not sure I fully understand how the 2 time series are created :one is called innov and the other is start.innov but what I am not sure to understand is the following :

nobs = 5000000

set.seed(183);
test1 <- arima.sim(model=list(ma=0.5), n = nobs,innov=rnorm(nobs,mean=0,sd=0.1))

set.seed(183);
test2 <- arima.sim(model=list(ma=0.5), n=nobs, mean=0, sd=0.1)

sum(abs(test1-test2)>0)
test1[1]
test2[1]
test1[2]
test2[2]

Browse[4]> sum(abs(test1-test2)>0)
[1] 1
Browse[4]> test1[1]
[1] 0.09417
Browse[4]> test2[1]
[1] -0.02648
Browse[4]> test1[2]
[1] -0.1053
Browse[4]> test2[2]
[1] -0.1053

which indicate that on 5 millions of generated event with the 2 methods only the first element is different ! (I try to change the seed and I saw the same). I could understand that most of the element are different but the fact that only the first one is different is something that I don't understand, sorry.


I made a copy of the function to play a bit and print some value :

=> first line :
test1 <- test(model=list(ma=0.5), n = nobs,innov=rnorm(nobs,mean=0,sd=0.1))

=> second line :
   test2 <- test(model=list(ma=0.5), n=nobs, mean=0, sd=0.1)


after :
        x <- ts(c(start.innov[seq_len(n.start)], innov[1L:n]), start = 1 -
                        n.start)
I see :
[1]  0.2681255 -0.0398882 -0.0853729 -0.0707863 -0.0262917 -0.0001408
[1]  0.0268126 -0.0398882 -0.0853729 -0.0707863 -0.0262917 -0.0001408

after :
        if (length(model$ma)) {
                x <- filter(x, c(1, model$ma), sides = 1L)
                x[seq_along(model$ma)] <- 0
        }
I see :
[1]  0.00000  0.09417 -0.10532 -0.11347 -0.06168 -0.01329
[1]  0.00000 -0.02648 -0.10532 -0.11347 -0.06168 -0.01329

after :
        if (length(model$ar))
                x <- filter(x, model$ar, method = "recursive")
I see :
[1]  0.00000  0.09417 -0.10532 -0.11347 -0.06168 -0.01329
[1]  0.00000 -0.02648 -0.10532 -0.11347 -0.06168 -0.01329

after :
        if (n.start > 0)
                x <- x[-(seq_len(n.start))]
I see :
[1]  0.09417 -0.10532 -0.11347 -0.06168 -0.01329
[1] -0.02648 -0.10532 -0.11347 -0.06168 -0.01329

after :
        if (d > 0)
                x <- diffinv(x, differences = d)
I see :
[1]  0.09417 -0.10532 -0.11347 -0.06168 -0.01329
[1] -0.02648 -0.10532 -0.11347 -0.06168 -0.01329

so the difference appear since the beginning with the with element and which seems to be divided by 10!

after :
        x <- ts(c(start.innov[seq_len(n.start)], innov[1L:n]), start = 1 -
                        n.start)
I see :
[1]  0.2681255 ...
[1]  0.0268126 ...

in your test1 call, you are not supplying arguments for what should be used for the innovations associated with start.innov which is used for the burn in period. So, arima.sim uses the defaults of mean = 0 and sd = 1.0.
> set.seed(123);
> test1 <- arima.sim(model=list(ma=0.5), n = 250,innov=rnorm(250,mean=0,sd=0.1))
> print(head(test1))
[1] -0.30326  0.14436  0.08499  0.01645  0.17797  0.13184

> set.seed(123);
> test3 <- arima.sim(model=list(ma=0.5), innov = rnorm(250,mean=0, sd=1.0), n = 250, mean=0, sd=0.1)
> print(head(test3))
[1] -0.2582  1.4436  0.8499  0.1645  1.7797  1.3184

this doesn't seems to be true or I misinterpret you explanation
For your test2 call, you do provide them ( so they are used for both innov and start.innov ) and you use sd = 0.1 So, for test2, the values for the burn in period end up being different from the ones in test1.
I am not sure I understand the meaning of "burn in period". Do we expect that to change only the first element of 2 time series of 5M of events >

Below, I made a test3 that can be used to get the same values as test2. In short, by specifiying the innov call EXACTLY in test1, you're letting arima.sim use the default arguments for the start.innov call so that's why they're different.
I did the test and I agree

Thanks a lot
Cheers
Fabien


#====================================================================================================================
 ##undebug(arima.sim)

set.seed(123);
test1 <- arima.sim(model=list(ma=0.5), n = 250,innov=rnorm(250,mean=0,sd=0.1))
print(head(test1))

set.seed(123);
test2 <- arima.sim(model=list(ma=0.5), n=250, mean=0, sd=0.1)
print(head(test2))

set.seed(123);
test3 <- arima.sim(model=list(ma=0.5), innov = rnorm(250,mean=0, sd=0.1), n = 250, mean=0, sd=0.1)
print(head(test3))

On Sat, Jul 11, 2015 at 3:46 AM, Fabien Tarrade <fabien.tarr...@gmail.com <mailto:fabien.tarr...@gmail.com>> wrote:

    Dear all,

    When doing a DataCamp tutorial with R I find the following
    observation that using 2 different syntax for "arima.sim" give
    different answer for the first element

    If I use the the function using the list of argument describe in
    the help manual :
    arima.sim(model=list(ma=0.5),n=250,innov=rnorm(250,mean=0,sd=0.1))

    or if I use the following syntax use in a DataCamp example :

    arima.sim(model=list(ma=0.5), n=250, mean=0, sd=0.1) it is
    accepted by DataCamp

    I don't find exactly the same results. The reason is that even if
    the seed is the same in both cases the first element is not
    identical while it should be (it doesn't mean that the results is
    wrong, maybe for the first element the seed is not propagated
    correctly)

    here the results of the difference using the same seed (only the
    first element is different using the 2 different syntaxes) :

      [1] -0.252214  0.000000  0.000000  0.000000  0.000000 0.000000
    0.000000  0.000000  0.000000  0.000000
[11] 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000


    here the code to reproduce this feature :

    set.seed(123);
    test1 <- 0.05 +
    arima.sim(model=list(ma=0.5),n=250,innov=rnorm(250,mean=0,sd=0.1))
    set.seed(123);
    test2 <- 0.05 + arima.sim(model=list(ma=0.5), n=250, mean=0, sd=0.1)

    test1-test2

    I am using R 3.1.2 GUI 1.65 Mavericks build (6833) on Mac (I guess
    arima come with stats which is included in R (?))
    The DataCamp team ask me to report to you about this observation
    on this mailing list. If you want me to fill a bug report some R
    bug tracking system, let me know

    Please tell me if this is the wrong list and which other
    information do you need from R and how to get then (compiler,
    version of some R packages ...)


    Hope this help
    Thanks
    Cheers
    Fabien
-- Dr Fabien Tarrade

    Quantitative Analyst - Data Scientist - Researcher

    Senior data analyst specialised in the modelling, processing and
    statistical treatment of data.
    PhD in Physics, 10 years of experience as researcher at the
    forefront of international scientific research.
    Fascinated by finance and data modelling.

    Geneva, Switzerland

    Email : cont...@fabien-tarrade.eu
    <mailto:cont...@fabien-tarrade.eu>
    <mailto:cont...@fabien-tarrade.eu <mailto:cont...@fabien-tarrade.eu>>
    Phone : www.fabien-tarrade.eu <http://www.fabien-tarrade.eu>
    <http://www.fabien-tarrade.eu>
    Phone : +33 (0)6 14 78 70 90
    <tel:%2B33%20%280%296%2014%2078%2070%2090>

    LinkedIn <http://ch.linkedin.com/in/fabientarrade/> Twitter
    <https://twitter.com/fabtar> Google
    <https://plus.google.com/+FabienTarradeProfile/posts> Facebook
    <https://www.facebook.com/fabien.tarrade.eu> Google
    <skype:fabtarhiggs?call> Xing
    <https://www.xing.com/profile/Fabien_Tarrade>
    ______________________________________________
    R-help@r-project.org <mailto:R-help@r-project.org> mailing list --
    To UNSUBSCRIBE and more, see
    https://stat.ethz.ch/mailman/listinfo/r-help
    PLEASE do read the posting guide
    http://www.R-project.org/posting-guide.html
    and provide commented, minimal, self-contained, reproducible code.



--
Dr Fabien Tarrade

Quantitative Analyst - Data Scientist - Researcher

Senior data analyst specialised in the modelling, processing and statistical treatment of data. PhD in Physics, 10 years of experience as researcher at the forefront of international scientific research.
Fascinated by finance and data modelling.

Geneva, Switzerland

Email : cont...@fabien-tarrade.eu <mailto:cont...@fabien-tarrade.eu>
Phone : www.fabien-tarrade.eu <http://www.fabien-tarrade.eu>
Phone : +33 (0)6 14 78 70 90

LinkedIn <http://ch.linkedin.com/in/fabientarrade/> Twitter <https://twitter.com/fabtar> Google <https://plus.google.com/+FabienTarradeProfile/posts> Facebook <https://www.facebook.com/fabien.tarrade.eu> Google <skype:fabtarhiggs?call> Xing <https://www.xing.com/profile/Fabien_Tarrade>
______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to