我无法理解回归拟合中多项式对比的用法。特别是,我指的是,用于R
表示此页面上描述的间隔变量(具有相等间距的正交变量)使用的编码。
在该页面的示例中,如果我理解正确的话,R适合间隔变量的模型,返回一些权重,以加权其线性,二次或三次趋势。因此,拟合模型应为:
其中应取的值,,,或根据不同的电平的间隔可变的。
它是否正确?而且,如果是这样,多项式对比的目的是什么?
contr.poly
的R.
我无法理解回归拟合中多项式对比的用法。特别是,我指的是,用于R
表示此页面上描述的间隔变量(具有相等间距的正交变量)使用的编码。
在该页面的示例中,如果我理解正确的话,R适合间隔变量的模型,返回一些权重,以加权其线性,二次或三次趋势。因此,拟合模型应为:
其中应取的值,,,或根据不同的电平的间隔可变的。
它是否正确?而且,如果是这样,多项式对比的目的是什么?
contr.poly
的R.
Answers:
只是概括一下(以防万一OP超级链接将来会失败),我们正在研究hsb2
这样的数据集:
id female race ses schtyp prog read write math science socst
1 70 0 4 1 1 1 57 52 41 47 57
2 121 1 4 2 1 3 68 59 53 63 61
...
199 118 1 4 2 1 1 55 62 58 58 61
200 137 1 4 3 1 2 63 65 65 53 61
可以在这里导入。
我们将变量read
变成和有序/序数变量:
hsb2$readcat<-cut(hsb2$read, 4, ordered = TRUE)
(means = tapply(hsb2$write, hsb2$readcat, mean))
(28,40] (40,52] (52,64] (64,76]
42.77273 49.97849 56.56364 61.83333
现在我们都准备运行常规的方差分析-是的,它是R,基本上我们有一个连续的因变量write
,和一个具有多个级别的解释变量readcat
。在R中,我们可以使用lm(write ~ readcat, hsb2)
1.生成对比度矩阵:
有序变量有四个不同的级别readcat
,因此我们将得到对比。
table(hsb2$readcat)
(28,40] (40,52] (52,64] (64,76]
22 93 55 30
首先,让我们花钱,看看内置的R函数:
contr.poly(4)
.L .Q .C
[1,] -0.6708204 0.5 -0.2236068
[2,] -0.2236068 -0.5 0.6708204
[3,] 0.2236068 -0.5 -0.6708204
[4,] 0.6708204 0.5 0.2236068
现在,让我们剖析幕后发生的事情:
scores = 1:4 # 1 2 3 4 These are the four levels of the explanatory variable.
y = scores - mean(scores) # scores - 2.5
n = 4; X <- outer(y, seq_len(n) - 1, "^") # n = 4 in this case
那里发生什么了?然后outer(a, b, "^")
将的元素提高a
到的元素b
,因此第一列来自以下操作:,,和;,,和的第二列; 第三个来自,,和 ; 第四,,,(- 0.5 )0 0.5 0 1.5 0(- 1.5 )1(- 0.5 )1 0.5 1 1.5 1(- 1.5 )2 = 2.25 (- 0.5 )2 = 0.25 0.5 2 = 0.25 1.5 2 = 2.25 (- 1.5 )3 = - 3.375 3 = 3.3750.5 3 = 0.125 1.5和。
接下来,我们对该矩阵进行正交分解,并采用Q()的紧凑表示。本文中进一步解释了 R中QR分解中使用的函数的一些内部工作。c_Q = qr(X)$qr
...我们仅保存对角线(z = c_Q * (row(c_Q) == col(c_Q))
)。对角线是什么:只是分解部分的“底部”条目。只是?好吧,不...事实证明,上三角矩阵的对角线包含矩阵的特征值!
接下来,我们调用以下函数:raw = qr.qy(qr(X), z)
,其结果可以通过两个操作“手动”复制:1.将的紧凑形式(即)转化为,可以通过和进行转换,以及2.执行矩阵乘法,如。Qqr(X)$qr
Q = qr.Q(qr(X))
Q %*% z
至关重要的是,将乘以的特征值不会改变组成列向量的正交性,但是鉴于特征值的绝对值从左上到右下以递减的顺序出现,的乘法将趋于减少高阶多项式列中的值:[R
Matrix of Eigenvalues of R
[,1] [,2] [,3] [,4]
[1,] -2 0.000000 0 0.000000
[2,] 0 -2.236068 0 0.000000
[3,] 0 0.000000 2 0.000000
[4,] 0 0.000000 0 -1.341641
比较因数分解操作前后的后一列向量(二次方和三次方)中的值,并将其与未受影响的前两列进行比较。
Before QR factorization operations (orthogonal col. vec.)
[,1] [,2] [,3] [,4]
[1,] 1 -1.5 2.25 -3.375
[2,] 1 -0.5 0.25 -0.125
[3,] 1 0.5 0.25 0.125
[4,] 1 1.5 2.25 3.375
After QR operations (equally orthogonal col. vec.)
[,1] [,2] [,3] [,4]
[1,] 1 -1.5 1 -0.295
[2,] 1 -0.5 -1 0.885
[3,] 1 0.5 -1 -0.885
[4,] 1 1.5 1 0.295
最后,我们称将(Z <- sweep(raw, 2L, apply(raw, 2L, function(x) sqrt(sum(x^2))), "/", check.margin = FALSE))
矩阵raw
变成正交向量:
Orthonormal vectors (orthonormal basis of R^4)
[,1] [,2] [,3] [,4]
[1,] 0.5 -0.6708204 0.5 -0.2236068
[2,] 0.5 -0.2236068 -0.5 0.6708204
[3,] 0.5 0.2236068 -0.5 -0.6708204
[4,] 0.5 0.6708204 0.5 0.2236068
该函数通过将("/"
)列中的每个元素除以简单地“标准化”矩阵。因此,可以将其分解为两个步骤:,结果为,它们是中每一列的分母,其中一列中的每个元素都除以。(i)(ii) apply(raw, 2, function(x)sqrt(sum(x^2)))
2 2.236 2 1.341
此时,列向量形成的正交基础,直到我们摆脱掉第一列(即截距)为止,并重现了以下结果:contr.poly(4)
该矩阵的列是正交的,例如可以通过(sum(Z[,3]^2))^(1/4) = 1
和来显示z[,3]%*%z[,4] = 0
(顺便说一下,行也是如此)。并且,每一列都是将初始提高到阶,阶和阶幂(即线性,二次方和三次方)的结果。1 2 3
2.哪些对比(列)在解释解释变量的各个级别之间的差异方面起着重要作用?
我们可以运行方差分析并查看摘要...
summary(lm(write ~ readcat, hsb2))
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 52.7870 0.6339 83.268 <2e-16 ***
readcat.L 14.2587 1.4841 9.607 <2e-16 ***
readcat.Q -0.9680 1.2679 -0.764 0.446
readcat.C -0.1554 1.0062 -0.154 0.877
...看到readcat
on 的线性影响write
,因此原始值(在文章开头的第三部分代码中)可以复制为:
coeff = coefficients(lm(write ~ readcat, hsb2))
C = contr.poly(4)
(recovered = c(coeff %*% c(1, C[1,]),
coeff %*% c(1, C[2,]),
coeff %*% c(1, C[3,]),
coeff %*% c(1, C[4,])))
[1] 42.77273 49.97849 56.56364 61.83333
... 要么...
...或者更好...
作为正交对比它们的组分的总和增加了零为常数,它们中的任何两个的点积为零。如果我们可以可视化它们,它们将看起来像这样:a1,⋯,a
正交对比背后的思想是,我们可以提取的推论(在这种情况下,是通过线性回归生成系数)将是数据独立方面的结果。如果我们仅使用情况就不会如此作为对比。
在图形上,这更容易理解。将大型黑色正方形块中按组的实际均值与预测值进行比较,看看为什么对二次多项式和三次多项式(曲线仅用黄土近似)的贡献最小的直线近似是最佳的:
如果仅出于效果考虑,对于其他近似值(二次方和三次方)的线性对比,ANOVA的系数也一样大,则随后的无意义图将更清楚地描绘每个“贡献”的多项式图:
代码在这里。
qr.qy()
功能方面有一些需要解决的问题,但是我一定会尝试一下,我是否有时间尽快就您的问题说些连贯的话。