R Random Data Sets within loops

Posted by jugossery on Stack Overflow See other posts from Stack Overflow or by jugossery
Published on 2012-11-25T18:15:56Z Indexed on 2012/11/26 23:04 UTC
Read the original article Hit count: 171

Filed under:

Here is what I want to do:

I have a time series data frame with let us say 100 time-series of length 600 - each in one column of the data frame.

I want to pick up 4 of the time-series randomly and then assign them random weights that sum up to one (ie 0.1, 0.5, 0.3, 0.1). Using those I want to compute the mean of the sum of the 4 weighted time series variables (e.g. convex combination).

I want to do this let us say 100k times and store each result in the form

ts1.name, ts2.name, ts3.name, ts4.name, weight1, weight2, weight3, weight4, mean

so that I get a 9*100k df.

I tried some things already but R is very bad with loops and I know vector oriented solutions are better because of R design.

Thanks

Here is what I did and I know it is horrible

The df is in the form

v1,v2,v2.....v100
1,5,6,.......9
2,4,6,.......10
3,5,8,.......6
2,2,8,.......2
etc

e=NULL
for (x in 1:100000)
{
  s=sample(1:100,4)#pick 4 variables randomly
  a=sample(seq(0,1,0.01),1)
  b=sample(seq(0,1-a,0.01),1)
  c=sample(seq(0,(1-a-b),0.01),1)
  d=1-a-b-c
  e=c(a,b,c,d)#4 random weights
  average=mean(timeseries.df[,s]%*%t(e))
  e=rbind(e,s,average)#in the end i get the 9*100k df
  }

The procedure runs way to slow.

EDIT:

Thanks for the help i had,i am not used to think R and i am not very used to translate every problem into a matrix algebra equation which is what you need in R. Then the problem becomes a little bit complex if i want to calculate the standard deviation. i need the covariance matrix and i am not sure i can if/how i can pick random elements for each sample from the original timeseries.df covariance matrix then compute the sample variance (t(sampleweights)%*%sample_cov.mat%*%sampleweights) to get in the end the ts.weighted_standard_dev matrix

Last question what is the best way to proceed if i want to bootstrap the original df x times and then apply the same computations to test the robustness of my datas

thanks

© Stack Overflow or respective owner

Related posts about r