R调查库平均值测试的差异

时间:2017-10-11 15:02:28

标签: r statistics survey

我目前正在使用R&#39 survey库来分析调查数据。我有两个不同时期的两个样本。我的目标是测试两个加权样本均值之间的差异是否等于0. 问题:如何使用R&R的调查库来解决这个问题? < / p>

我尝试了两种方法:

方法1:创建两个不同的postStratify对象。玩具示例:

q1 = c(1,1,1,1,0)

group = c(0,0,0,1,1)

df = data.frame(q1, group, time)

svy_design = svydesign(ids = ~1 , data = df)

pop_data = data.frame(group = c(0,1), Freq = c(10,90))

ps_design = postStratify(svy_design, strata = ~group,pop_data)

first = svymean(q1, ps_design) #Weighted Mean of first sample


q1 = c(1,1,1,0,0)

g2 = c(1,1,0,0,0)

df2 = data.frame(q1, g2)

pop_data_2 = data.frame(group = c(0,1), Freq = c(20,80))

svd_2 = svydesign(ids = ~1, data = df2)

psd_2 = postStratify(svd_2, strata = ~g2, pop_data_2)

second = svymean(q2, psd_2) #Weighted mean of second sample

这种方法的问题在于,我不知道如何在&#34;首先&#34;上进行均值测试的差异。和&#34;第二&#34; - 两个svymean个对象。

方法2:仅创建一个postStratify对象。玩具示例:

q1 = c(1,1,1,1,0, 1,1,0,0,1)

group = c(0,0,0,1,1, 0,0,1,1,1)

time = c(0,0,0,0,0, 1,1,1,1,1) #Variable that distinguishes between the samples

df = data.frame(q1, group, time)

svy_design = svydesign(ids = ~1 , data = df)

pop_data = data.frame(group = c(0,1), Freq = c(10,90))

ps_design = postStratify(svy_design, strata = ~group,pop_data)

svyby(~q1, ~time, ps_design, svymean)

svyttest(q1~time, ps_design)

这种方法的问题在于,当我运行svyby只是为了检查创建的平均值时,svyby的输出不是我所期望的。它为mean = 0.5714提出了time = 0,当理论加权平均值为0.55时。 非常感谢任何有关理论均值与svyby不同的见解。

非常感谢你的时间。

1 个答案:

答案 0 :(得分:0)

你正在寻找这个吗?感谢

library(survey)

q1 = c(1,1,1,1,0, 1,1,0,0,1)

# edited #
group = c(0,0,0,1,1, 2,2,3,3,3)

time = c(0,0,0,0,0, 1,1,1,1,1) #Variable that distinguishes between the samples

df = data.frame(q1, group, time)

svy_design = svydesign(ids = ~1 , data = df)

# edited #
pop_data = data.frame(group = c(0,1,2,3), Freq = c(10,90,20,80))

ps_design = postStratify(svy_design, strata = ~group,pop_data)

svyby(~q1, ~time, ps_design, svymean)

svyttest(q1~time, ps_design)