线性和立方模型之间的编码差异

时间:2012-11-11 07:10:04

标签: r

我有两个变量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 |)。这将使我相信所有变量都很重要。

我可以使用这个拟合回归模型来预测平均温度差异的平均能耗吗?

2 个答案:

答案 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) )

(那是立方体。我确定你可以推广到四次,五次等)。