【发布时间】:2019-04-08 19:28:34
【问题描述】:
我希望这个问题与之前的问题不同,而是用不同的词。我已经尝试使用以前问题的解决方案,但它们对我没有用,所以请耐心等待!
所以我在 R 中的线性回归模型输出遇到了一些问题。我担心模型使用了不正确的参照组作为我放入模型中的交互项的一部分,即使我'我试图在将各个术语放入交互术语之前重新调整它们的级别,但我没有得到预期的输出。
我有一个包含连续变量和分类变量的数据集。假设变量 A 和 B 是连续变量,变量 C、D 和 E 是分类变量(0 = 否,1 = 是)。分类变量的参照组已设置为“否”(0)。这是一个例子:
ID A B C D E
1 53.6 25 No Yes No
2 51.1 12 Yes No Yes
3 50.9 NA Yes Yes No
4 49.3 2 No No No
5 48.1 NA No Yes No
我尝试了几种不同的方法来获取交互项,因此我的模型设置如下:
lm1 <- lm(A ~ C*D + E + B, data=example)
lm2 <- lm(A ~ C:D + E + B, data=example)
我希望得到一个输出表,其中列出了截距的回归系数、标准误差等,C 单独,D 单独,E,B,然后是 C * D,分解为 4 个可能的组合组中的 3 个该交互项,减去包含两个参照组的组合组(C 和 D 都为“No”,“C_No:D_No”)。
预期:
Coefficient Estimate Std. Error t value Pr(>|t|)
Intercept 90.76369 0.54308 167.127 < 2e-16 ***
C_Yes -0.28639 0.62044 -0.462 0.644465
D_Yes -3.01242 1.14733 -2.626 0.008771 **
E_Yes 0.05865 0.01691 3.468 0.000544 ***
B -0.20891 0.35982 -0.581 0.561634
C_No:D_Yes -0.42116 0.47213 2.617 0.01674 *
C_Yes:D_Yes 2.01208 1.43154 1.406 0.160148
C_Yes:D_No -0.02877 0.65271 -0.345 0.672531
对于第一个模型,我得到了截距的输出,单独的 C,单独的 D,E,B,然后只有 C * D 的一个组合组。
实际:
Coefficient Estimate Std. Error t value Pr(>|t|)
Intercept 90.76369 0.54308 167.127 < 2e-16 ***
C_Yes -0.28639 0.62044 -0.462 0.644465
D_Yes -3.01242 1.14733 -2.626 0.008771 **
E_Yes 0.05865 0.01691 3.468 0.000544 ***
B -0.20891 0.35982 -0.581 0.561634
C_No:D_Yes -0.42116 0.47213 2.617 0.01674 *
对于第二个模型,我得到了截距、E、B,然后是 C * D 的所有组合组的输出。
实际:
Coefficient Estimate Std. Error t value Pr(>|t|)
Intercept 90.76369 0.54308 167.127 < 2e-16 ***
E_Yes 0.05865 0.01691 3.468 0.000544 ***
B -0.20891 0.35982 -0.581 0.561634
C_No:D_Yes -0.42116 0.47213 2.617 0.01674 *
C_Yes:D_Yes NA (all not defined because of singularities)
C_Yes:D_No -0.02877 0.65271 -0.345 0.672531
所以现在我的问题是:
1) 是否有不同的代码可以在一个模型而不是两个模型中提供我想要的一切?
2) 这个模型是否按原样使用 C_Yes:D_Yes 作为参照组而不是 C_No:D_No,这就是为什么我会收到关于奇点的错误?我的变量是相关的,是的,但并不完美,所以我没想到多重共线性会成为问题。
3) 如果参照组是正确的,为什么我会得到 C_No:D_No(参照组)的系数估计值?
【问题讨论】:
-
如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。
with(example, table(C, D))返回什么?这些真的编码为 0/1 还是 Yes/No?你的输出与我期望从lm()看到的不符 -
OK @MrFlick,我尝试使用更多信息对其进行编辑,而不会从原始状态更改问题。为了回答您关于表格的问题,它显示了 C_No:D_No 类别中的 939 个、C_Yes:D_Yes 类别中的 70 个、C_Yes:D_No 类别中的 74 个以及 C_No:D_Yes 类别中的 20 个。很抱歉,我无法在这里直观地重现。所有分类变量都存储为带有标签的无序因子变量。
标签: r linear-regression