Dear Giovanni,
Thanks so much for your answer, but your script returns gaussian white
noise not a random walk, at least the time series generated don't have
the expected periodogram for a random walk. That's the reason why I use
cumsum, the sum of a white noise is a easy way produce a random walk
which periodogram scales at 1/f.
finally I solve my problem with a brute-force algorithm. Searching in
the web I found some pages about random walks and neural networks where
people said that this task is very difficult and is in a exploratory
step nowadays.
Thank you very much for your help
Sergio
Giovanni Petris wrote:
Hi Sergio,
Your function does not estimate what you want. In fact it does not
estimate anything useful. A random walk is not stationary; in
particular, the variance at time t is t. Therefore, estimating variances
based on one run, averaging over time, does not make any sense. This is
what you are doing with the command cor(cumsum(s[,1]),cumsum(s[,2]))
(the correlation is obtained by standardizing the covariance, dividing
by the square root of the variances).
On the other hand, if you replicate your simulation (as you do) and
compute the correlation of the simulated random walks at any _fixed_
time, you can see that the result is what you expect. Here it is.
require(MASS)
fz <- function(n, t, rho){
+ f <- array(dim = c(t, 2, n))
+ V <- matrix(c(1, rho, rho, 1), ncol = 2)
+ for(i in 1 : n){
+ f[,, i] <- mvrnorm(n = t, mu = c(0,0), Sigma = V)
+ }
+ return(f)
+ }
set.seed(123)
out <- fz(1000, 20, rho = 0.7)
apply(out, 1, function(x) cor(t(x))[1,2]) # cor at times 1,...,20
[1] 0.7306115 0.6810394 0.6879712 0.7095613 0.7325612 0.6922090
0.7007823
[8] 0.6828095 0.7144861 0.6932104 0.7061211 0.6781331 0.6898726
0.6926878
[15] 0.6949656 0.6995899 0.7524582 0.6912938 0.6931928 0.6820243
Best,
Giovanni
On Mon, 2010-05-10 at 14:55 -0400, Sergio Andrés Estay Cabrera wrote:
Dear R users and specially Albyn and Giovanni,
thanks for your answers, but in fact I supposed the same at the
beginning of my problem. However, when I generate the data seldom I
obtain the expected correlation. For example using this code:
fz<-function(n,t,rho){
f<-NULL
for(i in 1:n){
s<-rmvnorm(n=t,mean=c(0,0),sigma=matrix(c(1,rho,rho,1),ncol=2),method='svd')
paso<-cor(cumsum(s[,1]),cumsum(s[,2]))
f<-c(f,paso)}
f<-f
}
and then plot the histogram of the results, it is possible to observe
that the distribution of the values is asymmetric with most of the
simulations close to 1 when the value of rho is higher than 0.3 and
looks like a uniform distribution with values below 0.3.
I suspect than the only possibility is using a brute force algorithm.
Any advice would be helpful
Sergio A. Estay
*CASEB *
Departamento de Ecología
Universidad Catolica de Chile
Albyn Jones wrote:
Sums of correlated increments have the same correlation as the original
variables...
library(mvtnorm)
X<- matrix(0,nrow=1000,ncol=2)
for(i in 1:1000){
Y <- rmvnorm(1000,mean=mu,sigma=S)
X[i,] <- apply(Y,2,sum)
}
cor(Y)
[,1] [,2]
[1,] 1.0000000 0.4909281
[2,] 0.4909281 1.0000000
So, unless you meant that you want the _sample_ correlation to be
pre-specified, you are all set.
albyn
On Sun, May 09, 2010 at 09:20:25PM -0400, Sergio Andrés Estay Cabrera wrote:
Hi everybody,
I am trying to generate two random walks with an specific correlation, for
example, two random walks of 200 time steps with a correlation 0.7.
I built the random walks with:
x<-cumsum(rnorm(200, mean=0,sd=1))
y<-cumsum(rnorm(200, mean=0,sd=1))
but I don't know how to fix the correlation between them.
With white noise is easy to fix the correlation using the function rmvnorm
in the package mvtnorm
I surfed in the web in the searchable mail archives in the R web site but
no references appears.
If you have some advices to solve this problems I would be very thankful.
Thanks in advance.
Sergio A. Estay
*CASEB *
Departamento de Ecología
Universidad Catolica de Chile
--
“La disciplina no tiene ningún mérito en circunstancias ideales. ” – Habor
Mallow
______________________________________________
R-help@r-project.org mailing list
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.
--
“La disciplina no tiene ningún mérito en circunstancias ideales. ” – Habor
Mallow
______________________________________________
R-help@r-project.org mailing list
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.