【问题标题】:lm(y~poly(x1, x2,x3, degree=2, raw=TRUE), data)lm(y~poly(x1, x2,x3, degree=2, raw=TRUE), data)
【发布时间】:2017-10-19 06:10:22
【问题描述】:

lm(y~poly(x1, x2,x3, degree=2, raw=TRUE), data)

等于

lm(y~x1 + x2 + x3 + x1*x2 + x1*x3 + x2*x3 + x1^2 + x2^2 + x3^2 , data)

?

如果是,为什么我们需要设置raw=TRUE

【问题讨论】:

    标签: r lm


    【解决方案1】:

    您可以自己轻松测试:

    DF <- data.frame(x1 = 1:2, x2 = 3:4, x3 = 5:6)
    with(DF, poly(x1, x2, x3, degree = 2, raw = TRUE))
    #     1.0.0 2.0.0 0.1.0 1.1.0 0.2.0 0.0.1 1.0.1 0.1.1 0.0.2
    #[1,]     1     1     3     3     9     5     5    15    25
    #[2,]     2     4     4     8    16     6    12    24    36
    #attr(,"degree")
    #[1] 1 2 1 2 2 1 2 2 2
    #attr(,"class")
    #[1] "poly"   "matrix"
    

    列名显示三个变量的乘积以及每个变量在该乘积中的度数。例如,1.1.0 表示 x1^1 + x2^1 + x3^0

    当然,您也可以在回归模型的输出中看到这一点。

    如果您希望系数对应于原始多项式,则需要raw = TRUE,即alpha0 + alpha11 * x1^1 + alpha12 * x1^2 + ...。如果您不需要它,您应该设置raw = TRUE,因为orthogonal polynomials 具有一些用于回归分析的理想属性。

    【讨论】:

      猜你喜欢
      • 2015-06-04
      • 2018-09-24
      • 2020-01-28
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多