r - R : contrast coefficient matrix or contrast matrix/coding scheme? 中的自定义对比以及如何到达那里?

标签 r matrix anova

自定义对比在分析中被广泛使用,例如:“这个三水平因子的水平 1 和水平 3 的 DV 值是否有显着差异?”

直观地说,这种对比用单元均值表示为:

c(1,0,-1)

这些对比度中的一个或多个,绑定(bind)为列,形成对比度系数矩阵,例如
mat = matrix(ncol = 2, byrow = TRUE, data = c(
    1,  0,
    0,  1,
   -1, -1)
)
     [,1] [,2]
[1,]    1    0
[2,]    0    1
[3,]   -1   -1

然而,当涉及到由系数矩阵指定的这些对比时,网络和书籍中有很多(显然是矛盾的)信息。我的问题是哪些信息是正确的?

权利要求 1: contrasts(factor) 采用系数矩阵

在一些示例中,向用户展示了直观的对比度系数矩阵可以通过 contrasts() 直接使用。或 C()职能。所以它很简单:
contrasts(myFactor) <- mat

权利要求 2:变换系数以创建编码方案

在其他地方(例如 UCLA stats),我们被告知系数矩阵(或基矩阵)在使用前必须从系数矩阵转换为对比矩阵。这涉及对系数矩阵进行变换:(mat')⁻¹ ,或者,在 Rish 中:
contrasts(myFactor) = solve(t(mat))

此方法需要使用截距的初始列填充矩阵。为了避免这种情况,一些网站建议使用可以处理非方阵的广义逆函数,即 MASS::ginv()
contrasts(myFactor) = ginv(t(mat))

第三种选择:预乘变换,取逆,后乘变换

再次在其他地方(例如来自 SPSS support 的注释),我们学习到正确的代数是:(mat'mat)-¹ mat'
暗示我创建对比矩阵的正确方法应该是:
x = solve(t(mat)%*% mat)%*% t(mat)
     [,1] [,2] [,3]
[1,]    0    0    1
[2,]    1    0   -1
[3,]    0    1   -1

contrasts(myFactor) = x

我的问题是,哪个是正确的? (如果我准确地解释和描述每条建议)。如何在 R 中为 lm 指定自定义对比? , lme ETC?

引用

最佳答案

权利要求 2 是正确的 (见答案 herehere ),有时也声称 1。这是因为在某些情况下,(转置)系数矩阵的广义逆矩阵等于矩阵本身。

关于r - R : contrast coefficient matrix or contrast matrix/coding scheme? 中的自定义对比以及如何到达那里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31818174/

相关文章:

r - "effects"和 `aov` 返回的 `lm` 是什么?

r - 如何使用 sf 更改国家之间共享边界的颜色?

r - 使用 multidplyr 在 dplyr::do 中调用带参数的函数

r - 为什么 apply() 不适用于 R 中的数据框?

Swift 矩阵和

python - Python 中具有大量组的 Anova 测试

html - 更改 actionButton 及其标签的大小

r - 使用 foreach 循环和并行处理生成矩阵

c++ - 如何循环矩阵让对角线上的数字具有高优先级?

r - 如何使用显示 CLD 字母的箱线图显示 Tukey 测试的结果