【问题标题】:Using square of a variable in R Formulas在 R 公式中使用变量的平方
【发布时间】:2014-08-05 09:36:48
【问题描述】:

我正在尝试进行回归,包括自变量的平方。其他转换似乎有效,但无法识别正方形。例如

lm(y ~ x + x^2 + sin(x), data=as.data.frame(cbind(x=rnorm(10), y=rnorm(10))))

Call:
lm(formula = y ~ x + x^2 + sin(x), data = as.data.frame(cbind(x = rnorm(10), 
   y = rnorm(10))))

Coefficients:
(Intercept)            x       sin(x)  
    -0.1594      -0.6171       1.2072 

sin 被识别,但 x^2 未被识别。

【问题讨论】:

  • 为此目的推荐使用poly,或者至少使用I(x^2)
  • @Pascal poly 在其默认配置中可能会给出令人困惑的系数,并且很难从中删除项。
  • @James 可能。这就是帮助页面存在的原因。
  • @Pascal 除了帮助文件只提到它们默认是正交多项式,而不是它们会在线性模型中产生误导性的系数。

标签: r formula


【解决方案1】:

您必须将I 包装起来以“按原样”处理术语,而不是将^ 解释为公式运算符(有关详细信息,请参阅?formula)。

lm(y ~ x + I(x^2) + sin(x), data=as.data.frame(cbind(x=rnorm(10), y=rnorm(10))))

Call:
lm(formula = y ~ x + I(x^2) + sin(x), data = as.data.frame(cbind(x = rnorm(10), 
    y = rnorm(10))))

Coefficients:
(Intercept)            x       I(x^2)       sin(x)  
    0.06850      2.82023     -0.03109     -3.84221

【讨论】:

    【解决方案2】:

    你可以简单地写

    lm(y ~ x + c(x*x) + sin(x), data=as.data.frame(cbind(x=rnorm(10), y=rnorm(10))))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-06
      • 1970-01-01
      • 2014-08-26
      • 1970-01-01
      • 2013-10-18
      • 2014-02-15
      相关资源
      最近更新 更多