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

weighting not works in 'aov' function of R

我在通过 R 中的 aov 函数实现加权数据集时遇到了麻烦。
例如我的数据集“data_file”有目标变量“Y”和四个独立的变量命名(treat,V1,V2,V3)。
假设:
V1(2 组)和治疗(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 加权数据测试对我的数据进行加权.

我使用Twang包中的mnps函数进行加权。

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")

我在一个 Whosebug 的回答中读到 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)

显示错误:

Error: $ operator is invalid for atomic vectors

我试过了:

base_V2_aov <- aov(data_file$V2 ~ data_file$trea, weights(weight))

没有找到对象“weight”

我也检查过这个:

base_V2_aov <- aov(data_file$V2 ~ data_file$trea, weights(data_file))

没有显示错误,但是结果和没有加权的结果完全一样(我希望在没有加权的情况下根据显着差异进行更改)

我想知道 aov 函数中权重的合适“对象”是什么?

看来你应该使用:
weight = your weighting variableaov 个参数中。
我复制了一些类似你的数据集,使用上面的代码后,组间比较的结果不同,这表明加权方法有效。