测试 R 中多个系数的相等性

Posted

技术标签:

【中文标题】测试 R 中多个系数的相等性【英文标题】:Testing the equality of multiple coefficients in R 【发布时间】:2016-10-02 04:08:33 【问题描述】:

我有以下型号:

y = b1_group1*X1 + b1_group2*X1 + b2_group1*X2 + b2_group2*X2 + ... +
    b10_group1*X10 + b10_group2*X10

在R中很容易制作如下:

OLS <- lm(Y ~ t1:Group + t2:Group + t3:Group + t4:Group + t5:Group + t6:Group +
          t7:Group + t8:Group + t9:Group + t10:Group,weights = weight, Alldata)

在 STATA 中,我现在可以进行以下测试:

test (b1_group1=b1_group2) (b2_group1=b2_group2) (b3_group1=b3_group2)
b1_group1 - b1_group2 = 0 b2_group1 - b2_group2 = 0 b3_group1 - b3_group2 = 0

这通过 F 检验告诉我来自 X1、X2 和 X3 的系数组在组 1 和组 2 之间是否共同不同。

谁能告诉我如何在 R 中做到这一点?谢谢!

【问题讨论】:

来自 CRAN TaskView "Econometrics":更一般的线性假设的测试在 linearHypothesis() 中实现,非线性假设在包 car 中的 deltaMethod() 中实现。 在此处查看最后三行:***.com/questions/37418421/… 顺便说一下,根据 StataCorp LP 的说法,Stata 是一个名称,而不是缩写。因此,Stata 更喜欢被称为 Stata 而不是 STATA 【参考方案1】:

看这个例子:

library(car)

mod <- lm(mpg ~ disp + hp + drat*wt, mtcars)
linearHypothesis(mod, c("disp = hp", "disp = drat", "disp = drat:wt" ))
Linear hypothesis test

Hypothesis:
disp - hp = 0
disp - drat = 0
disp - drat:wt = 0

Model 1: restricted model
Model 2: mpg ~ disp + hp + drat * wt

  Res.Df    RSS Df Sum of Sq      F  Pr(>F)  
1     29 211.80                              
2     26 164.67  3    47.129 2.4804 0.08337 .
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

请参阅?linearHypothesis,了解指定测试的各种其他方式。

替代方案:

以上内容向您展示了一种进行假设检验的快速简便的方法。对假设检验的代数有深入了解的用户可能会发现以下方法更方便,至少对于简单版本的检验而言。假设我们要测试cylcarb 上的系数是否相同。

mod <- lm(mpg ~ disp + hp + cyl + carb, mtcars)

以下测试是等效的:

测试一:

linearHypothesis(mod, c("cyl = carb" ))

Linear hypothesis test
Hypothesis:
cyl - carb = 0
Model 1: restricted model
Model 2: mpg ~ disp + hp + cyl + carb
  Res.Df    RSS Df Sum of Sq      F Pr(>F)
1     28 238.83                           
2     27 238.71  1   0.12128 0.0137 0.9076

测试二:

rmod<- lm(mpg ~ disp + hp + I(cyl + carb), mtcars)
anova(mod, rmod)

Analysis of Variance Table
Model 1: mpg ~ disp + hp + cyl + carb
Model 2: mpg ~ disp + hp + I(cyl + carb)
  Res.Df    RSS Df Sum of Sq      F Pr(>F)
1     27 238.71                           
2     28 238.83 -1  -0.12128 0.0137 0.9076

【讨论】:

嗨咖啡迷!您的答案不是我问题的 100% 答案,因为我想知道如何比较两组的多个系数。但是,您的建议帮助我找到了问题的答案。所以非常感谢。特别是对我来说:运行模型时,我必须使用summary mod 来查看 R 是如何命名交互的。然后我可以做你指定的事情linearHypothesis(mod, c("Group0:t1=Group1:t1", "Group0:t2=Group1:t2")) 完美!非常感谢您的帮助! 你能描述一些让我们做的线性代数吗anova(mod, rmod

以上是关于测试 R 中多个系数的相等性的主要内容,如果未能解决你的问题,请参考以下文章

multipla R平方和相关系数之间的主要区别是什么?

f检验的p值和r值是啥意思?

R - 相关性分析

具有相等和不等式的回归约束了R中的系数

如何在 R 中反应性地做多个情节?

R语言相关系数显著性检验及可视化的尝试