我有两个变量ENERGY和TEMP
我创建了另外两个变量temp2和temp 3
> temp2 <- data$temp^2
> temp3 <- data$temp^3
>data=cbind(data, energy, temp,temp2,temp3)
现在要创建一个立方体模型,它看起来就像一个线性模型吗?
>model<-lm(energy~temp+temp2+temp3)
编辑:
好的,所以我做了你的建议,这是输出:
> ?poly
> model<- lm( energy ~ poly(temp, 3) , data=data )
> summary(model)
Call:
lm(formula = energy ~ poly(temp, 3), data = data)
Residuals:
Min 1Q Median 3Q Max
-19.159 -11.257 -2.377 9.784 26.841
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 95.50 3.21 29.752 < 2e-16 ***
poly(temp, 3)1 207.90 15.72 13.221 2.41e-11 ***
poly(temp, 3)2 -50.07 15.72 -3.184 0.00466 **
poly(temp, 3)3 81.59 15.72 5.188 4.47e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 15.73 on 20 degrees of freedom
Multiple R-squared: 0.9137, Adjusted R-squared: 0.9008
F-statistic: 70.62 on 3 and 20 DF, p-value: 8.105e-11
我会假设我会以同样的方式测试拟合度测试,并查看Pr(&gt; | t |)。这将使我相信所有变量都很重要。
我可以使用这个拟合回归模型来预测平均温度差异的平均能耗吗?
答案 0 :(得分:3)
不应编写虚拟变量,而应考虑使用poly
函数:
?poly # Polynomial contrasts
model<- lm( energy ~ poly(temp, 3) , data=data )
如果你想使用与傻瓜方法相同的列(这对于统计推断目的不利),你可以使用'raw'参数:
model.r<- lm( energy ~ poly(temp, 3, raw=TRUE) , data=data )
预测将是相同的,但标准错误不会。这应该给你与@RomanLuštrik的建议相同的估计值。这些术语不是正交的,因此它们必要的相关性很高,你将无法对独立效应做出正确的推论。
补充问题:“我能否使用这个拟合回归模型来预测平均温度差异的平均能耗?”
没有。你需要指定一个特定的两个温度然后predict
可以给你一个区别,但是这个差异将根据参考点的不同而不同,即使差异的大小相同。这是一个使用非线性项的后果。也许你应该描述你的目标,并使用一个更适合方法问题的论坛。当您知道自己想要做什么时,可以进行编码。当您更清晰地阐述问题时,http://stats.stackexchange.com可能更合适。
答案 1 :(得分:0)
使用lm
进行多项式回归有两种方法:
lm( y ~ x + I(x^2) + I(x^3) )
和
lm( y ~ poly(x, 3, raw=TRUE) )
(那是立方体。我确定你可以推广到四次,五次等)。