我有一些带有样本权重的调查数据,我正在使用 R 中的 survey 包来比较人口统计群体之间的平均值。我在使用
svyttest
进行涉及二分自变量(例如性别)的双样本 t 检验时没有遇到任何问题。
但是,我在使用调查包中的
anova.svglym
功能时遇到一些问题。当广义线性模型有两个自变量时,它工作得很好。但是当 GLM 只有一个多分自变量时,我得到 NULL 结果。
这里有一些示例代码,将 BMI 与人口统计数据进行比较来描述我的问题
library(survey)
# Survey design
healthdsgn = svydesign(data = healthsvy, id = ~SVYPSU, strata = ~SVYSTRATA, weights = ~SVYWT, nest = TRUE)
# This has two independent variables
# Outputs a normal ANOVA table
race_sex_glm = svyglm(BMI~RACE+SEX, healthdsgn)
anova(race_sex_glm)
# This has one independent polytomous variable
# Does not output a normal ANOVA table. Returns NULL
race_glm = svyglm(BMI~RACE, healthdsgn)
anova(race_glm)
当我在 R 中使用
aov
函数时,不会出现此问题 — 这两个函数都会产生正常的 ANOVA 输出:
summary(aov(BMI~RACE+SEX, healthsvy))
summary(aov(BMI~RACE, healthsvy))
但是,
aov
没有考虑调查权重,因此输出将不正确。
我应该怎么做才能解决这个问题?
我遇到了完全相同的问题,并且找到了解决方法。不要使用
anova( modelWithSingleFactor )
创建一个具有截距但没有因子的模型(模型公式为 dv ~ 1
),然后运行 anova( modelWithSingleFactor, modelWithOnlyIntercept )
。这会在两个模型之间进行模型比较,并且考虑到它们之间的差异在于是否包含感兴趣的因素,并且考虑到方差分析模型比较使用与单个模型的方差分析表相同的似然比检验,我相信结果与您想要获得的结果相同。