[R] problem with nested loop for regression
rcoder
mpdotbook at gmail.com
Mon Aug 4 18:58:17 CEST 2008
Hi,
I guess my question is really more about the nested for loop construct and
whether it is doing what I intend it to do in my code in the previous post.
I would be grateful if anyone who has used nested loops could let me know if
I am doing something wrong.
Thanks,
rcoder
rcoder wrote:
>
> Hi everyone,
>
> I'm experiencing difficulty getting the results I want when I use a nested
> for loop. I have a data set to which I perform some calculations, and then
> try to apply a regression over a rolling window. The code runs, but the
> regression results I am getting (intercept and slope) are simply the same,
> repeated again and again in the results matrix. The regression does not
> seem to be obeying the instructions of the nested loop, which intend it to
> calculate regression coefficients over a data one row at a time. I have
> been struggling with the code for many days now, testing various parts,
> and I cannot seem to get the nested loop to work as I want it to. I would
> be very grateful for any suggestions. Below is a brief version of my code:
>
> #Code start
> library(zoo)
> seed.set(1)
> Pmat<-matrix(rnorm(1000), nrow=100, ncol=100)
> maxcol<-ncol(Pmat)
> maxrow<-nrow(Pmat)
> startrow<-10
> period<-10
> wind<-2 #roll window
> subdiv<-period/wind
> rollstart<-11 #start roll at period+1
> #converting Pmat into ts for rollapply() to work...
> PmatTS<-ts(Pmat)
> Preg<-matrix(NA,ncol=maxcol,nrow=2*maxrow)
> PmatWt<-matrix(NA, nrow=subdiv,ncol=maxcol)
> mult_col<-matrix(1:5, nrow=5, ncol=1)
> #rolling calculations...
> for (i in (rollstart):maxrow)
> {
> #extract the relevant timeframe...
> dslice<-PmatTS[(i-period):i,]
> dslicets<-ts(dslice)
> #operating on sliced data...
> Pmin<-rollapply(dslicets, wind, by=wind, min, na.rm=F)
> Pmax<-rollapply(dslicets, wind, by=wind, max, na.rm=F)
> Pmult<-Pmin*Pmax #calculating product
> tt<-time(Pmult)
> for (j in 1:5) #1st nested loop
> {
> PmatWt[j,]<-Pmult[j,]*mult_col[j,]
> }
> #rolling regression analysis...
> for (k in 1:maxcol) #2nd nested loop
> {
> sel_col<-PmatWt[,k]
> if(!all(is.na(sel_col))) {Preg[,k]<-coef(lm(tt~sel_col))}
> }
> }
> #Code End
>
> Thanks,
>
> rcoder
>
--
View this message in context: http://www.nabble.com/problem-with-nested-loop-for-regression-tp18792841p18815273.html
Sent from the R help mailing list archive at Nabble.com.
More information about the R-help
mailing list