4

調査で SE の計算に問題があります。これは私がやりたいことの例であり、R で調査パッケージを使用しようとしました (以下の例の fpc は、各層の観測数に等しい)。

データを生成するコード:

id = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) 
strata = c(6, 6, 6, 7, 7, 7, 8, 8, 8, 8, 8, 8) 
weight = c(60, 75, 85, 140, 170, 175, 270, 310, 325, 785, 1450, 3920) 
fpc = c(8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 6, 6)
answer = c("2", "2", "3", "1", "2", NA, NA, 2, "3", NA, "1", NA)
df = data.frame(id, strata, weight, fpc, answer)
df <- df[complete.cases(df), ]

次に、調査パッケージを使用して平均と SE を計算しようとします。

dstrat<-svydesign(id=~1,strata=~strata, weights=~weight, data=df, fpc=~fpc)
svymean(~answer, dstrat)

        mean    SE
answer1 0.60803 0.2573
answer2 0.23518 0.1755
answer3 0.15679 0.1479

私の最初の質問は次のとおりです。研究で答えられなかった観察の重みをどのように考慮に入れることができますか? 上記の例では、関数を実行する前に NA 観測を削除していますが、この情報を含めたいと考えています。最大の重みを持つ観測値に対する回答があるかどうかに応じて、SE が大きくなったり小さくなったりすると思いますか?

2 番目の質問は、「正味価値」の SE を計算するにはどうすればよいですか? 推定:

answer1 = good  
answer2 = neutral  
answer3 = bad 

answer1 - answer3 = 0.60803 - 0.15679 = 0.45124 として「正味値」を計算できます。この「正味価値」の SE を取得するにはどうすればよいですか?

4

1 に答える 1

4

最初の質問は stats.stackexchange に関するものですが、データが欠落している場合は SE を計算できないというのが答えだと思います。しかし、2番目の質問のSEを解決する方法は次のとおりです。

library(survey)
id <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) 
strata <- c(6, 6, 6, 7, 7, 7, 8, 8, 8, 8, 8, 8) 
weight <- c(60, 75, 85, 140, 170, 175, 270, 310, 325, 785, 1450, 3920) 
fpc <- c(8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 6, 6)
answer <- c("2", "2", "3", "1", "2", NA, NA, 2, "3", NA, "1", NA)
df <- data.frame(id=id, strata=strata, weight=weight, fpc=fpc, answer=answer)


# this is probably a mistake
df <- df[complete.cases(df), ]
# in most data sets, you should be using na.rm=TRUE later
# and not tossing out statements before the `svydesign` gets run

df$ones <- as.numeric( df$answer %in% 1 )

df$threes <- as.numeric( df$answer %in% 3 )

dstrat<-svydesign(id=~1,strata=~strata, weights=~weight, data=df, fpc=~fpc)

a <- svymean( ~ ones + threes , dstrat , na.rm = TRUE )

svycontrast(a, list(avg=c(0,0), diff=c(1,-1)))
于 2016-01-09T19:08:13.500 に答える