R- 如何使用两种不同的调查设计进行双样本 t 检验

R- How to conduct two-sample t-test with two different survey designs

我想对两个均值的相等性执行双样本(韦尔奇)t 检验,其中一个是使用简单随机抽样 (srsmean) 获得的,另一个是使用计算得出的调查包的调查权重 (mean_weighted)。我还在 mean_weighted 和在调查设计中同时实施加权和分层时获得的平均值之间进行了 t 检验 (mean_strat)。

我知道有一个 svyttest() 函数,但是,据我所知,这个函数只测试 在一个调查设计中 两个样本的均值,不是通过不同的调查设计获得的手段。

我还尝试使用 rnorm 创建虚构样本,例如 c(rnorm(9710, mean = 156958.8, sd = 364368)),但这种方法的问题在于,在分层等复杂抽样方法中,有效 n 是通常小于 nominal n,所以我不确定将什么作为 n。此外,这种方法感觉有点做作,因为我会将数据拟合到特定类型的分布。

最后,我尝试自己写出 t 统计量的方程式,但是,在计算涉及复杂调查设计的“平均值差异的标准误差”时,我也 运行 解决了相关问题到“有效样本量”。

是否有另一种方法适用于 srsmean, mean_weighted 之间的 t 检验和 mean_weighted, mean_strat 之间的 t 检验?

library(survey)

wel <- c(68008.19, 128504.61,  21347.69,
         33272.95,  61828.96,  32764.44,
         92545.62,  58431.89,  95596.82,
         117734.27)
rmul <- c(16, 16, 16, 16, 16, 16, 16,
          20, 20, 20)
strat <- c(101, 101, 101, 101, 101, 102, 102, 102, 102, 102)


survey.data <- data.frame(wel, rmul, strat)

srsmean <- mean(survey.data$wel)

survey_weighted <- svydesign(data = survey.data,
                             ids = ~wel, 
                             weights = ~rmul, 
                             nest = TRUE)

mean_weighted <- svymean(~wel, survey_weighted)

survey_strat <- survey_strat <- svydesign(data = surveydata, 
                                          ids= ~wel, 
                                          weights = ~rmul, 
                                          strata = ~strat, 
                                          nest = TRUE)
mean_strat <- svymean(~wel, survey_strat)

我对你的 mean_weightedmean_strat 之间的 t 检验的目的感到困惑,因为这些系数之间的差异总是为零?我可能会将简单的随机样本与这样的复杂设计进行比较?

library(survey)

wel <- c(68008.19, 128504.61,  21347.69,
         33272.95,  61828.96,  32764.44,
         92545.62,  58431.89,  95596.82,
         117734.27)
rmul <- c(16, 16, 16, 16, 16, 16, 16,
          20, 20, 20)
strat <- c(101, 101, 101, 101, 101, 102, 102, 102, 102, 102)

survey.data <- data.frame(wel, rmul, strat)

survey_unweighted <- svydesign(data = survey.data,
                             ids = ~1)

mean_unweighted <- svymean(~wel, survey_unweighted)

survey_strat <- survey_strat <- svydesign(data = survey.data, 
                                          ids= ~wel, 
                                          weights = ~rmul, 
                                          strata = ~strat, 
                                          nest = TRUE)
mean_strat <- svymean(~wel, survey_strat)


coef_one <- coef( mean_unweighted )
coef_two <- coef( mean_strat )
se_one <- SE( mean_unweighted )
se_two <- SE( mean_strat )

t_statistic <- abs( coef_one - coef_two ) / sqrt ( se_one ^2 + se_two ^2 )
p_value <- ( 1 - pnorm( abs( coef_one - coef_two ) / sqrt( se_one ^2 + se_two ^2 ) ) ) * 2
sig_diff <- ifelse( 1 - pnorm( abs( coef_one - coef_two ) / sqrt( se_one ^2 + se_two ^2 ) ) < 0.025 , "*" , "" )