比较不同回归的系数
Compare coefficients across different regressions
我正在尝试比较具有相同变量但 运行 不同子组的两个线性回归的系数。我想检查模型 1 中的系数是否等于模型 2 中的系数。我需要知道每个系数。
我的可重现数据:
Data <- data.frame(
gender = sample (c("men", "women"), 2000, replace = TRUE),
var1 = sample (c("value1", "value2"), 2000, replace = TRUE),
var2 = sample (c("valueA", "valueB"), 2000, replace = TRUE),
y = sample(0:10, 2000, replace = TRUE)
)
我运行两个回归:
men <- subset(Data, gender =="men")
women <- subset(Data, gender =="women")
lm.men <- lm(y~var1+var2, data = men)
summary(lm.men)
lm.women <- lm(y~var1+var2, data = women)
summary(lm.women)
基本上,我想测试一下:
-
lm.men
中的系数 var1
= lm.women
中的系数 var1
-
lm.men
中的系数 var2
= lm.women
中的系数 var2
我不能使用anova()
函数,因为我的两个样本是不同的。我想我应该应用 F 检验,但找不到用于该检验的函数。
有谁知道如何解决我的问题?
正如@Barker 在评论中指出的,这个问题的统计部分是 already answered on CrossValidated;我将在此处添加一些 R 编码详细信息。
为了回答这些问题(“var1
和 var2
的效果在男性和女性之间有显着差异吗?”),拟合一个具有按性别变量交互的模型并测试交互项。
Data <- data.frame(
gender = sample (c("men", "women"), 2000, replace = TRUE),
var1 = sample (c("value1", "value2"), 2000, replace = TRUE),
var2 = sample (c("valueA", "valueB"), 2000, replace = TRUE),
y = sample(0:10, 2000, replace = TRUE)
)
mm <- lm(y~(var1+var2)*gender,Data)
以下是互动条款:
interax <- c("var1value2:genderwomen","var2valueB:genderwomen")
printCoefmat(coef(summary(mm))[interax,])
## Estimate Std. Error t value Pr(>|t|)
## var1value2:genderwomen 0.20144 0.28241 0.7133 0.4758
## var2valueB:genderwomen -0.15423 0.28266 -0.5456 0.5854
我正在尝试比较具有相同变量但 运行 不同子组的两个线性回归的系数。我想检查模型 1 中的系数是否等于模型 2 中的系数。我需要知道每个系数。
我的可重现数据:
Data <- data.frame(
gender = sample (c("men", "women"), 2000, replace = TRUE),
var1 = sample (c("value1", "value2"), 2000, replace = TRUE),
var2 = sample (c("valueA", "valueB"), 2000, replace = TRUE),
y = sample(0:10, 2000, replace = TRUE)
)
我运行两个回归:
men <- subset(Data, gender =="men")
women <- subset(Data, gender =="women")
lm.men <- lm(y~var1+var2, data = men)
summary(lm.men)
lm.women <- lm(y~var1+var2, data = women)
summary(lm.women)
基本上,我想测试一下:
-
lm.men
中的系数var1
=lm.women
中的系数 -
lm.men
中的系数var2
=lm.women
中的系数
var1
var2
我不能使用anova()
函数,因为我的两个样本是不同的。我想我应该应用 F 检验,但找不到用于该检验的函数。
有谁知道如何解决我的问题?
正如@Barker 在评论中指出的,这个问题的统计部分是 already answered on CrossValidated;我将在此处添加一些 R 编码详细信息。
为了回答这些问题(“var1
和 var2
的效果在男性和女性之间有显着差异吗?”),拟合一个具有按性别变量交互的模型并测试交互项。
Data <- data.frame(
gender = sample (c("men", "women"), 2000, replace = TRUE),
var1 = sample (c("value1", "value2"), 2000, replace = TRUE),
var2 = sample (c("valueA", "valueB"), 2000, replace = TRUE),
y = sample(0:10, 2000, replace = TRUE)
)
mm <- lm(y~(var1+var2)*gender,Data)
以下是互动条款:
interax <- c("var1value2:genderwomen","var2valueB:genderwomen")
printCoefmat(coef(summary(mm))[interax,])
## Estimate Std. Error t value Pr(>|t|)
## var1value2:genderwomen 0.20144 0.28241 0.7133 0.4758
## var2valueB:genderwomen -0.15423 0.28266 -0.5456 0.5854