是否存在用R来识别线性模型中二次分量的方法?

时间:2011-05-06 15:22:41

标签: r statistics linear-regression

假设我们有一个y = x1 + x2 +形式的加法模型,有很多变量。 R中是否有例程来识别应被视为表现出二次效应的变量?我知道Box-Cox转换允许识别y的链接,但是x呢。如果只有一些变量,那么很容易对它们进行测试,但是如何保持一大堆呢?

来自德国的问候

2 个答案:

答案 0 :(得分:8)

您可能不在乎是否需要二次项,而是需要任何效果是非线性的。虽然二次项可以得到其中的一些,但有一些非线性的非二次效应。有很多方法可以做到这一点,但我喜欢在HmiscDesign包中使用受限制的三次样条函数。

例如:

library(Design)
x1 <- runif(200)
x2 <- runif(200)
x3 <- runif(200)
x4 <- runif(200)
y <- x1 + x2 + rnorm(200)
f1    <- ols(y ~ rcs(x1,4) + rcs(x2,4) + rcs(x3,4) + rcs(x4,4))

> anova(f1)
                Analysis of Variance          Response: y 

 Factor          d.f. Partial SS  MS         F    P     
 x1                3   19.2033740 6.40112466 7.96 0.0001
  Nonlinear        2    5.6426655 2.82133277 3.51 0.0319
 x2                3   10.6042751 3.53475836 4.40 0.0051
  Nonlinear        2    0.5047319 0.25236593 0.31 0.7309
 x3                3    3.0844406 1.02814688 1.28 0.2829
  Nonlinear        2    0.1474818 0.07374091 0.09 0.9124
 x4                3    4.1770965 1.39236549 1.73 0.1619
  Nonlinear        2    4.1770665 2.08853325 2.60 0.0771
 TOTAL NONLINEAR   8    9.5322762 1.19153452 1.48 0.1660
 REGRESSION       12   37.1220435 3.09350362 3.85 <.0001
 ERROR           187  150.3064834 0.80377799      

ols基本上相当于lm。注意输出中的ANOVA表:它测试了效果的非线性,包括全局测试。

答案 1 :(得分:0)

如果要创建所有双向交互,可以执行以下操作:

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

请参阅:

?formula