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 <[email protected]>
Cc : "[email protected]" <[email protected]>
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]]
>
>
>
> ______________________________________________
> [email protected] 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]]
______________________________________________
[email protected] 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.