问题描述
我在 R 中通过 aov
函数实现加权数据集时遇到了麻烦。
例如,我的数据集“data_file”具有目标变量“Y”和四个名为(treat、V1、V2、V3)的独立变量。
假设:
V1(2组)&treat(3组)-->分类,
V2 和 v3 --> 连续。
我想检查治疗组之间自变量的基线比较。
我为此目的运行了 aov
测试,例如:
base_V2_aov <- aov(data_file$V2 ~ data_file$treat)
base_V2_anov <- anova(base_V2_aov)
base_V2
它有效并显示“治疗”组中 V2 的显着差异,但其他变量不显着,然后我决定基于 V2 对我的数据进行加权并在加权数据中运行 aov
测试。
我使用 mnps
包中的 Twang
函数进行加权。
mnps.data <- mnps(treat ~ V2,data_file,estimand = "ATE",stop-method = "es.mean",n.trees=5000,varbose = F)
data_file$ weight <- get.weights(mnps.data,stop.method = "es.mean")
我在 stackoverflow 的一个回答中读到 survey
包不支持单向方差分析测试的加权,但 aov
函数支持。
所以我运行了这个代码:
base_V2_aov <- aov(data_file$V2 ~ data_file$trea,weights(data_file$weight))
base_V2_anov <- anova(base_V2_aov)
print(base_V2_anov)
错误:$ 运算符对原子向量无效
我试过:
base_V2_aov <- aov(data_file$V2 ~ data_file$trea,weights(weight))
它没有找到对象“重量”
我也检查了这个:
base_V2_aov <- aov(data_file$V2 ~ data_file$trea,weights(data_file))
它没有显示错误,但结果与没有加权的结果完全相同(我预计会根据没有加权的显着差异而改变)
我想知道 aov
函数中权重的合适“对象”是什么?
解决方法
看来你应该使用:weight = your weighting variable
参数中的 aov
。
我复制了类似你的数据集的东西,使用上面的代码后,组间比较的结果不同,这表明加权方法有效。