[R] predict.lm() question
Rolf Turner
r.turner at auckland.ac.nz
Tue Apr 8 00:13:35 CEST 2008
You called lm() with a predictor named ``D$X'' and called predict.lm()
with a predictor name ``X''.
Simplest remedy: Use
fit <- lm(Y ~ X, data = D)
Remark: Not a good idea to use ``D'' as the name of your data frame
(``D'' is
the name of a function --- derivative). Likewise don't use ``lm'' as
the name
of an object (result of fitting a model) --- ``lm'' is the name of a
function,
as well you know!
No immediate harm will come, but there can be subtle consequences I
believe,
and anyhow it's confusing.
cheers,
Rolf Turner
On 8/04/2008, at 9:57 AM, Chip Barnaby wrote:
> Dear R-people ...
>
> I'm a new user. I can't get predict.lm() to produce predictions for
> new independent data. There are some messages in archived help about
> this problem, but I still don't see my error after reviewing
> those. I understand that the new independent data must have the same
> name(s) as used when the model was made.
>
> In the example below, predict.lm produces the predictions for the
> original (model input) data plus a warning message. What I want is
> predictions for alternative data (in data frame DX in the example).
>
> Thanks,
> Chip Barnaby
>
>> D<-data.frame( X=seq(1:10))
>> D$Y<-D$X+rnorm( 10)
>> D
> X Y
> 1 1 0.3811634
> 2 2 1.8770049
> 3 3 3.5253376
> 4 4 3.1851957
> 5 5 3.8088813
> 6 6 5.7333074
> 7 7 7.4896623
> 8 8 7.9394056
> 9 9 8.6683570
> 10 10 10.7480675
>> lm<-lm( D$Y~D$X)
>> summary( lm)
>
> Call:
> lm(formula = D$Y ~ D$X)
>
> Residuals:
> Min 1Q Median 3Q Max
> -0.98812 -0.36354 -0.09808 0.48154 0.88288
>
> Coefficients:
> Estimate Std. Error t value Pr(>|t|)
> (Intercept) -0.58935 0.41680 -1.414 0.195
> D$X 1.07727 0.06717 16.037 2.29e-07 ***
> ---
> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
>
> Residual standard error: 0.6101 on 8 degrees of freedom
> Multiple R-Squared: 0.9698, Adjusted R-squared: 0.9661
> F-statistic: 257.2 on 1 and 8 DF, p-value: 2.293e-07
>
>> DX<-data.frame( X=seq( 5.5, 11.5))
>> DX
> X
> 1 5.5
> 2 6.5
> 3 7.5
> 4 8.5
> 5 9.5
> 6 10.5
> 7 11.5
>> predict.lm( lm, DX)
> 1 2 3 4 5
> 6 7
> 0.4879174 1.5651887 2.6424600 3.7197313 4.7970026 5.8742739
> 6.9515453
> 8 9 10
> 8.0288166 9.1060879 10.1833592
> Warning message:
> 'newdata' had 7 rows but variable(s) found have 10 rows
>>
>
> ---------------------------------------------------------
> Chip Barnaby cbarnaby at wrightsoft.com
> Vice President of Research
> Wrightsoft Corp. 781-862-8719 x118 voice
> 131 Hartwell Ave 781-861-2058 fax
> Lexington, MA 02421 www.wrightsoft.com
>
> ______________________________________________
> R-help at 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.
######################################################################
Attention:\ This e-mail message is privileged and confid...{{dropped:9}}
More information about the R-help
mailing list