当还包括与这些变量的交互时,如何包括线性和二次项?

机器算法验证 定心 二次型
2022-03-26 06:53:10

在添加具有分类预测变量及其交互作用的数字预测变量时,通常认为有必要事先将变量居中于 0。原因是主要影响很难解释,因为它们是用数字预测器在 0 进行评估的。

我现在的问题是,如果一个不仅包括原始数字变量(作为线性项)而且还包括该变量的二次项,如何居中?在这里,需要两种不同的方法:

  1. 将两个变量集中在它们各自的平均值上。不幸的是,考虑到原始变量,这两个变量的 0 现在处于不同的位置。
  2. 将两个变量集中在原始变量的均值处(即,从线性项的原始变量中减去均值,并从二次项中减去原始变量均值的平方)。使用这种方法,0 将表示原始变量的相同值,但二次变量不会以 0 为中心(即,变量的平均值不会为 0)。

考虑到居中的原因,我认为方法 2 似乎是合理的。但是,我找不到任何关于它的信息(也没有在相关问题中:ab)。

或者在模型中包含线性和二次项以及它们与其他变量的交互通常是一个坏主意?

2个回答

当包括多项式和它们之间的相互作用时,多重共线性可能是一个大问题。一种方法是查看正交多项式。

通常,正交多项式是关于某些内积正交的多项式族。

因此,例如,在具有权重函数的某些区域上的多项式的情况下w,内积为abw(x)pm(x)pn(x)dx- 正交性使内积0 除非m=n.

连续多项式最简单的例子是勒让德多项式,它在有限实数区间(通常在[1,1])。

在我们的例子中,空间(观察本身)是离散的,我们的权重函数也是常数(通常),所以正交多项式是勒让德多项式的一种离散等价。将常数包含在我们的预测变量中,内积很简单pm(x)Tpn(x)=ipm(xi)pn(xi).

例如,考虑x=1,2,3,4,5

从常数列开始,p0(x)=x0=1. 下一个多项式的形式为axb,但我们目前并不担心规模,所以p1(x)=xx¯=x3. 下一个多项式的形式为ax2+bx+c; 事实证明p2(x)=(x3)22=x26x+7与前两个正交:

x         p0  p1  p2   
1          1  -2   2   
2          1  -1  -1
3          1   0  -2
4          1   1  -1
5          1   2   2

通常,基也被归一化(产生一个正交族)——也就是说,每个项的平方和被设置为某个常数(例如,n, 或者n1,因此标准差为 1,或者可能是最常见的1)。

对一组多项式预测变量进行正交化的方法包括 Gram-Schmidt 正交化和 Cholesky 分解,尽管还有许多其他方法。


正交多项式的一些优点:

1) 多重共线性不是问题——这些预测变量都是正交的。

2) 低阶系数不会随着您添加项而改变如果你适合一个学位k通过正交多项式的多项式,您无需重新拟合即可知道所有低阶多项式的拟合系数。


R中的示例(cars数据,停车距离与速度): 在此处输入图像描述

在这里,我们考虑二次模型可能适用的可能性:

R 使用该poly函数来设置正交多项式预测器:

> p <- model.matrix(dist~poly(speed,2),cars)
> cbind(head(cars),head(p))
  speed dist (Intercept) poly(speed, 2)1 poly(speed, 2)2
1     4    2           1      -0.3079956      0.41625480
2     4   10           1      -0.3079956      0.41625480
3     7    4           1      -0.2269442      0.16583013
4     7   22           1      -0.2269442      0.16583013
5     8   16           1      -0.1999270      0.09974267
6     9   10           1      -0.1729098      0.04234892

它们是正交的:

> round(crossprod(p),9)
                (Intercept) poly(speed, 2)1 poly(speed, 2)2
(Intercept)              50               0               0
poly(speed, 2)1           0               1               0
poly(speed, 2)2           0               0               1

这是多项式的图: 在此处输入图像描述

这是线性模型输出:

> summary(carsp)

Call:
lm(formula = dist ~ poly(speed, 2), data = cars)

Residuals:
    Min      1Q  Median      3Q     Max 
-28.720  -9.184  -3.188   4.628  45.152 

Coefficients:
                Estimate Std. Error t value Pr(>|t|)    
(Intercept)       42.980      2.146  20.026  < 2e-16 ***
poly(speed, 2)1  145.552     15.176   9.591 1.21e-12 ***
poly(speed, 2)2   22.996     15.176   1.515    0.136    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 15.18 on 47 degrees of freedom
Multiple R-squared:  0.6673,    Adjusted R-squared:  0.6532 
F-statistic: 47.14 on 2 and 47 DF,  p-value: 5.852e-12

这是二次拟合的图: 在此处输入图像描述

我觉得中心化不值得麻烦,中心化使参数估计的解释更加复杂。如果使用现代矩阵代数软件,代数共线性不是问题。您在存在交互的情况下能够解释主要影响的最初动机并不强烈。当以任何自动选择的连续交互因子的值进行估计时,主效应在某种程度上是任意的,最好通过比较预测值将其视为一个简单的估计问题。在 Rrms包中contrast.rms例如,您可以获得任何感兴趣的对比度,而与变量编码无关。下面是一个分类变量 x1 的示例,其级别为“a”“b”“c”和一个连续变量 x2,使用具有 4 个默认节点的受限三次样条拟合。不同的 x1 允许 x2 和 y 之间的不同关系。x1 的两个水平在 x2=10 时进行比较。

require(rms)
dd <- datadist(x1, x2); options(datadist='dd')
f <- ols(y ~ x1 * rcs(x2,4))
contrast(f, list(x1='b', x2=10), list(x1='c', x2=10))
# Now get all comparisons with c:
contrast(f, list(x1=c('a','b'), x2=10), list(x1='c', x2=10))
# add type ='joint' to get a 2 d.f. test, or conf.type='simultaneous'
# to get simultaneous individual confidence intervals

使用这种方法,您还可以轻松估计交互因子的几个值的对比度,例如

contrast(f, list(x1='b', x2=10:20), list(x1='c', x2=10:20))