加权在 R 的“aov”函数中不起作用

问题描述

我在 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
我复制了类似你的数据集的东西,使用上面的代码后,组间比较的结果不同,这表明加权方法有效。