在R中,当使用序数预测变量拟合回归时,如何抑制多项式对比度水平之一?

时间:2017-03-24 18:23:35

标签: r linear-regression ordinal

以下是我在R中运行的混合模型的一些摘要数据(由summary()生成):

Fixed effects:
                    Estimate Std. Error         df t value Pr(>|t|)    
(Intercept)       -3.295e-01  1.227e-01  3.740e+01  -2.683   0.0108 *  
STANDING.L         8.447e-02  7.091e-02  7.346e+02   1.188   0.2354    
STANDING.Q        -4.624e-03  5.940e-02  7.323e+02  -0.078   0.9380    
STANDING.C         2.899e-03  5.560e-02  7.327e+02   0.052   0.9585    
FIRST.CLASS1       2.643e-02  7.017e-02  7.308e+02   0.376   0.7068    
CAREER.L           1.300e-01  5.917e-02  7.345e+02   2.189   0.0289 *  
CAREER.Q           8.914e-04  7.370e-02  7.295e+02   0.012   0.9904    
GENDER1            9.411e-02  5.892e-02  7.296e+02   1.596   0.1109    
HS.COURSES.L      -3.996e-02  7.819e-02  7.347e+02  -0.510   0.6102    
HS.COURSES.Q       4.977e-02  6.674e-02  7.322e+02   0.745   0.4567    
HS.COURSES.C       2.087e-02  5.735e-02  7.298e+02   0.364   0.7163    
PARENT.LIVE1       5.770e-03  8.434e-02  7.296e+02   0.068   0.9455    
CHILD.SETTING.L    1.241e-01  6.027e-02  7.288e+02   2.057   0.0400 *  
CHILD.SETTING.Q   -4.911e-02  4.879e-02  7.268e+02  -1.006   0.3146    
ES.EXTRA.L         2.702e-02  8.202e-02  7.287e+02   0.329   0.7421    
ES.EXTRA.Q         1.267e-01  7.761e-02  7.274e+02   1.631   0.1032    
ES.EXTRA.C         8.317e-02  7.533e-02  7.287e+02   1.104   0.2701    
TEACH.TAUGHT1      2.475e-01  6.316e-02  7.268e+02   3.918 9.79e-05 ***
SOME1ELSE.TAUGHT1 -1.818e-03  6.116e-02  7.277e+02  -0.030   0.9763

我的一些预测变量是有序的,如线性(.L),二次(.Q),有时是立方(.C)条件所示,这些项是自动生成的他们。我的问题是:我怎样才能重新运行同样的回归删除,比如ES.EXTRA.C一词?换句话说,我想抑制一个或多个自动生成的多项式对比,但可能保留其他的。我原以为update()可以做到这一点,但我还没有能够让它发挥作用。

我无法分享我的实际数据,但此代码会创建一些类似的结果,并在下面包含smci的答案说明:

set.seed(151) #Lock in a fixed random structure to these data.
Y.data = sort(round(rnorm(100, 75, 10))) #Some random Y data that are basically the same form as mine.
X.data1 = as.ordered(rep(c(1,2,3,4), each=25)) #Some random X data that are similar in form to mine.

summary(lm(Y.data~X.data1)) #This is what I had been doing, albeit using lmer() instead of lm(). It looks to have been creating the polynomial terms automatically.
summary(lm(Y.data~poly(X.data1, 3))) #Returns an error because X.data1 is not numeric
summary(lm(Y.data~poly(as.numeric(X.data1), 3))) #Now returns a call very similar to the first one, but this time I am in control of which polynomial terms are included.
summary(lm(Y.data~poly(as.numeric(X.data1), 2))) #The cubic term is suppressed now, as desired.

作为后续行动,有没有办法使用poly()来获得多项式项的某种混合?比方说,立方和第四力量只?我不知道为什么会这样做,但似乎值得了解......

1 个答案:

答案 0 :(得分:1)

更新:发布代码后:

正如我猜测你正在使用序数变量的多项式构建模型:

fit <- lm(y ~ poly(STANDING,3) + FIRST.CLASS + poly(CAREER,2) + GENDER +
              poly(HS.COURSES,3) + poly(CHILD.SETTING,2) + poly(ES.EXTRA,3) ...)

如果您想阻止立方术语,请使用poly(..., 2) 如果你真的只想要立方和四次项,没有二次或线性,那么hack就是使用I(STANDING^3) + I(STANDING^4),尽管那些将是原始多项式(不是正交,居中和缩放,就像poly()那样)。我从未见过这样的需要,听起来像是一个非常奇怪的请求。

见相关:

脚注:lmer()适用于固定效果模型,如果您不知道它是什么,请不要使用它,请使用普通lm()