【问题标题】:Interpretation of coefficients 2nd degree polynomial in RR中系数二阶多项式的解释
【发布时间】:2021-07-25 01:31:12
【问题描述】:

我使用 R 中的 lm 和 poly 函数制作了一个趋势面。 我的结果摘要如下:

> summary(tls.lm)

Call:
lm(formula = DEM_small_domain_TLS_5cm ~ poly(x, y, degree = 2), 
    data = tlsDF)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.09543 -0.01378 -0.00087  0.01260  0.10404 

Coefficients:
                           Estimate Std. Error  t value Pr(>|t|)    
(Intercept)                2.08e+01   4.98e-05 416945.4   <2e-16 ***
poly(x, y, degree = 2)1.0 -1.51e+01   2.00e-02   -754.0   <2e-16 ***
poly(x, y, degree = 2)2.0  6.79e-01   2.00e-02     33.9   <2e-16 ***
poly(x, y, degree = 2)0.1 -2.01e+01   2.00e-02  -1007.3   <2e-16 ***
poly(x, y, degree = 2)1.1 -7.17e+02   8.04e+00    -89.2   <2e-16 ***
poly(x, y, degree = 2)0.2 -6.02e-01   2.00e-02    -30.1   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.02 on 161446 degrees of freedom
Multiple R-squared:  0.908, Adjusted R-squared:  0.908 
F-statistic: 3.19e+05 on 5 and 161446 DF,  p-value: <2e-16

如何将系数转换为方程式?我尝试了以下方法:

截距 + coeff1.0 * x + coeff2.0 * x^2 +coeff1.1 * x * y + coeff 0.1 * y + coeff 0.2 * y^2

我也尝试将上面公式中的 x 和 y 替换掉,但是用一些提取的 x 和 y 值填充这些方程的结果与(正确构造的)趋势面结果完全不同。

编辑 在下图中,显示了 poly(..., raw=F) 和 poly(...,raw=T) 的构建趋势表面之间的差异。建议我使用raw=T,但我更喜欢raw=F的曲面。还有办法理解上面的系数吗? Poly_raw_difference

【问题讨论】:

  • 在公式中尝试poly(x, y, degree = 2, raw = TRUE)
  • @RuiBarradas:谢谢你的建议。它给出了不同的系数,并且使用 raw=TRUE 时的公式似乎确实有效。然而,我仍然不明白的是,上面示例中构建的趋势面是正确的,但不知何故,系数无法转化为作为该趋势面来源的适当方程。
  • 如果没有raw=TRUE,则返回的多项式(引用文档)都与 0 次常数多项式正交。你需要的是 raw 多项式。
  • @RuiBarradas:我编辑了我的问题以表明 raw=T 和 raw=F 趋势面之间存在差异。由于我更喜欢​​ raw=F 表面,有没有办法让这个模型的系数仍然有意义?

标签: r regression lm polynomials poly


【解决方案1】:

根据@Rui 的建议,您必须将raw=T 作为参数添加到poly:这里是内置数据集mtcars 的示例。

data("mtcars")
fit <- lm(formula = mpg ~ poly(disp, hp, degree = 2,raw = T), 
   data = mtcars)
summary(fit)
#coefficient of regression
coef <- coef(fit)
#use coefficient for predict outcome
p <- function(coef, x, y) {
  coef[1]+coef[2]*x+coef[3]*x^2+coef[4]*y+coef[5]*x*y+coef[6]*y^2
}

p1 <- round(p(coef,mtcars$disp,mtcars$hp),11)
p2 <- round(unname(predict(fit,mtcars[,3:4])),11)
identical(p1,p2)

这 2 个向量在小数点后 11 位是相同的

【讨论】:

  • 感谢您的回答。如编辑后的问题所示,当“raw = F”时,我更喜欢结果。如果我使用你的函数 p,结果会显示与 lm+poly 函数的输出不对应的奇怪数字。当 poly(..., raw=F) 时我应该如何解释系数?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-09
  • 2019-07-05
  • 2018-10-06
  • 1970-01-01
  • 2023-02-20
  • 1970-01-01
  • 2021-07-07
相关资源
最近更新 更多