That is very helpful--I've run your code, and it works perfectly with the 
example data.  However, I'm having some problems using my actual data--probably 
because my Time variable isn't actually a regular series (as it was in the 
example: Time=1:100).  When run, it's producing "estim" and "error" vectors of 
lengths much greater than N.  Here's a subset of my actual data: 

> dput(example) 
structure(list(Time = c(3075L, 3168L, 3318L, 3410L, 3534L, 3715L, 
3776L, 3926L, 3987L, 4110L, 4232L, 4291L, 4413L, 4505L, 4536L, 
4656L, 4782L, 4886L, 5018L, 5138L, 5187L, 5253L, 5384L, 5540L, 
5669L, 5740L, 5796L, 5887L, 5963L, 6042L, 6126L, 6197L, 6280L, 
6405L, 6464L, 6553L, 6659L, 6755L, 6847L, 6917L, 7001L, 7120L, 
7216L), Price = c(2.08, 3.55, 5.75, 5.69, 4.47, 5.11, 2.74, 3.04, 
3.87, 4.7, 6.61, 3.95, 4.63, 7.11, 3.08, 4.476628726, 7.472854559, 
8.775893276, 6.34, 5.79, 3.988888889, 4.019166667, 3.69, 4.603636364, 
5.242094366, 6.854871699, 5.163700257, 9.154206814, 8.712059541, 
10.60635248, 10.58180221, 10.55396909, 10.67812007, 9.985298266, 
10.57385693, 9.644945417, 11.62, 12.615, 13.61, 10.833333, 8.38, 
12.7, 8.94)), .Names = c("Time", "Price"), row.names = c(NA, 
-43L), class = "data.frame") 

Is this as simple as replacing the expression: 

                    for (i in Time) { 
with 

                    for (i in 1:length(Time)) { 

or somesuch? 

Mendi



________________________________
De : Rui Barradas <ruipbarra...@sapo.pt>

Cc : "r-help@r-project.org" <r-help@r-project.org> 
Envoyé le : Mardi 2 avril 2013 11h51
Objet : Re: [R] Iterative regression through a series

Hello,

The error comes from NAs where you would expect coefficients. Try the 
following.



set.seed(7511)  # Make the example reproducible

N <- 100
Time <-1:N
Price <- rnorm(N, 8, 2)

estim <- numeric(N)  # It's better to allocate the results
error <- numeric(N)  # vectors in advance
for (i in Time) {
      regr <- lm(Price[1:i] ~ Time[1:i])
      estim[i] <- coef(regr)[2]
      if(is.na(coef(regr)[2]))
        error[i] <- NA
      else
        error[i] <- summary(regr)$coefficients[2,2]

}


Hope this helps,

Rui Barradas


> Hello,
>
> Some context:  let's say I have a data series (let's call it PRICE, for 
> simplicity), sample size N.  I have a desire to regress that on TIME, and 
> then to use the TIME and intercept coefficients to predict the price in the 
> next period and to use the standard error to calculate a confidence interval. 
>  This is all very easy.
>
> However, what I need help for is to calculate a confidence interval for each 
> point in time:  imagining that at the end of the 10th period I have 10 data 
> points, and wish to regress them on the 10 periods to create a confidence 
> interval for the next 'predicted' price.  And so on from TIME[10:100].  So 
> the first regression would be of PRICE[1:10] on TIME[1:10], the second of 
> PRICE[1:11] on TIME[1:11], the third of PRICE[1:11] on TIME[1:11], and so on 
> to PRICE[1:N] and TIME[1:N].  I'd like to be able to vary the starting point 
> (so it would need to be an argument in the function, in this case it would be 
> 10).  The ultimate output of the code would be to save the TIME coefficients 
> and standard errors it generates to two vectors, say TIME.coef and TIME.SE.
>
> I'm not sure if lapply() can be bent to my will, or if a for loop would be 
> too inefficient, or what.  I'm not new to R, but I'm fairly new to this kind 
> of programming.
>
> This is a bungled mess of a narrative, and I apologize.  Please feel free to 
> use TIME=1:100 and PRICE=rnorm(100,8,2).
>
> Here's an attempt, which has failed for reasons I can only imagine.  Any help 
> getting this to work would be greatly appreciated.  Any help doing this 
> without loops would be even better.
>
>
>> Time=1:100
>> Price=rnorm(100,8,2)
>>
>> estim=0    #I'm hoping this will be the Time coefficient
>> error=0      #I'm hoping this will be the standard error of the Time 
>> coefficient
>> for (i in Time) {
> +    regr=lm(Price[1:i]~Time[1:i])
> +    estim=c(estim,coef(summary(regr))[2,1])
> +    error=c(error,coef(summary(regr))[2,1])
> +    }
> Error: subscript out of bounds
>
>
> Many, many thanks in advance.
>
> Mendi
>     [[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.
>
        [[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.

Reply via email to