Thank you all very much, specially Ellison.
 
I have been looking at some codes for simulation and I am trying to recreate 
them to my needs, but I understand I'm probably not doing it in the most 
efficient way.
What you said was very useful.
I really want to create a series of vector of random numbers, because later I 
will multiply them to a matrix P (choleski decomposition of variance-covariance 
of the residuals of a VAR), so to create a serie of vectors of shocks that will 
be added to my predictions.
The thing is, I wasn't able to construct the vectors of random numbers in a way 
they could be multiplied by the matrix P .
 
Would you be so kind as to point again what is wrong?
I am finding it very difficult to get it right in terms of what the object must 
be to be used the way I want, a list, a data.frame, matrix, etc
 
What I want to do is this:
1 - create a serie of N random vectors (actually, each 5 colums and 1 row), in 
this exercise N=30
2 - Create the serie P, by multiplying each of the random vectors by the same 
matrix c (choleski decomposition), which is 5x5, to get the shocks that 
consider the correlation between the variables.
3 - Create serie prev, with the predictions one step ahead of the variables, by 
multiplying the matrix coef (coefficients of the VAR) to the last prediction 
and adding the vector P of shocks.
 
What I tried was:
# 1- different ways of creating the random vectors, to see if any multiply by c:
N=30 # N = numero de periodos para computar a trajetoria da divida
u2<-list()
for(i in 1:N) u2[[i]] <- rnorm(5)
u2
str(u2)
 
u3 <- as.data.frame(matrix(rnorm(150), nrow=N, ncol=5))
u3
str(u3)
 
u4<-list()
for (i in 1:N) {
 u4[[i]]<- matrix(rnorm(150), ncol=5, nrow=N)
}
u4

# 2- create serie P, of shocks ajusted by the correlations
P2<-matrix(0, ncol=N, nrow=5)
P2
for(i in 1:N){
 P2[i]<-c%*%u2[i]
}
#but this is what i get:
Error in c %*% u2[i] : requires numeric/complex matrix/vector arguments
# i've tried taking out the [i], that doesn't work either.
# tried also u3, u4....
# obs- c is matrix 5x5:
> c
                 rp        igpm        ereal      crescpib     jurosreal
rp        0.2249159 -0.02046234  0.004685928 -0.0002799183  2.639328e-04
igpm      0.0000000  0.59823056 -0.577864072  0.0070967189 -5.797647e-03
ereal     0.0000000  0.00000000  0.129118968  0.0007949951 -1.061969e-04
crescpib  0.0000000  0.00000000  0.000000000  0.0236250353  2.646392e-05
jurosreal 0.0000000  0.00000000  0.000000000  0.0000000000  2.027526e-03
 
# 3 - create serie previ2, size=N, 
# obs - prev2[1] = vector z, of last observations
prev2<-c(z,rep(0,100))
prev2
for (i in 2:N) {
 prev2[i]<-coef%*%prev2[i-1]+P2[i]
}
 
 
Once again, thank you very much for the kind help.
 
Regards,
Iara

________________________________
De: S Ellison <s.elli...@lgcgroup.com>

Enviadas: Sexta-feira, 28 de Outubro de 2011 8:02
Assunto: RE: [R] creating vector os zeros for simulations (beginner's question)



> -----Original Message-----
> On Thu, Oct 27, 2011 at 1:44 PM, Iara Faria 

> > Dear R helpers,
> >
> > I know this is a simple task, but I'm new to R and I'm 
> still havind difficulties with the language.
> > I want to create 30 vectors to be used in a simulation, 
> each with 1 columm and 5 lines, of random numbers N(0,1).
> > What I tried was this:
> >
> > N=150
> > u2<-rep(1:150,0)
> > u2<-list(matrix(0,5))
> > u2
> > for(i in 1:N)
> > {
> > u2[i]<-rnorm(5)
> > }
> > u2

This line
> > u2[i]<-rnorm(5)
should be written
u2[[i]]<-rnorm(5)

u2[i] is a list element and ur[[i]] is the contents of the list element. Not 
quite the same thing. 

Your code could also be a great deal simpler as you don't need to generate a 
zero-filled list to start with. Try

u2<-list()
for(i in 1:N) u2[[i]] <- rnorm(5)

But it's easier to generate the matrix version as Seb said.

If you _really_ want a list - which can be useful, but is often unnecessary if 
you use apply() - you can also do
u2 <- as.data.frame(matrix(rnorm(150), nrow=5, ncol=30))

which, since a data frame is a list, is also a list.

And while we're on the topic, look at lapply and other versions of apply 
be[[elided Yahoo spam]]



> > ### also tried this:
> >
> > N=150
> > u2<-rep((matrix(0,5)),30)
> > u2
> > for(i in 1:N)
> > {
> > u2[i]<-rnorm(5)
> > }
> > u2
> >
> >
> > The problem is none of this gives me the random numbers 
> arranged in vectors.
> > I've tried other variations too, but haven't managed to get 
> it through.
> >
> > Any help is very welcome.
> > Kind regards,
> > Iara
> >        [[alternative HTML version deleted]]
> >
> >
> > ______________________________________________
> > 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.
> >
> >
> 
> ______________________________________________
> 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.
> *******************************************************************
This email and any attachments are confidential. Any use...{{dropped:10}}

______________________________________________
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.

Reply via email to