そのため、オブジェクトクラス(svyby)を関数(barNest)で使用しようとしていますが、そのクラスの処理方法がわかりません。これは、surveyパッケージとplotrixパッケージがうまく連携しないためです。幸いなことに、svybyオブジェクトのdotchartメソッドはそれほど多くのコードではないので、変更するだけでよいでしょう。
# run your code above, then review the dotchart method for svyby objects:
getS3method( 'dotchart' , 'svyby' )
b
..そしてそれから、オブジェクトに含まれるデータをマトリックスに変換した後、元のdotchart関数を呼び出す(つまり、svybyオブジェクトを使用せず、統計の通常のコレクションを使用する)ことをはるかに超えていないことを学ぶことができます。これで、あとは信頼区間線を追加するだけです。
SE(b)
信頼区間の幅は、実行することで簡単に取得できます(使用するよりも簡単です)。
confint( b )
それらの統計を抽出して、独自の統計を作成しbarNest
たり、plotCI
電話をかけたりできますか?
ドットチャートに信頼区間を設定することが重要な場合、主要なハードルはy座標を正しくヒットすることです。dotchartのデフォルトの方法を調べてください。
getS3method( 'dotchart' , 'default' )
..そして、y座標がどのように計算されるかを見ることができます。必需品だけに絞って、私はあなたがこれを使うことができると思います:
# calculate the distinct groups within the `svyby` object
groups <- as.numeric( as.factor( attr( b , 'row.names' ) ) )
# calculate the distinct statistics within the `svyby` object
nstats <- attr( b , 'svyby' )$nstats
# calculate the total number of confidence intervals you need to add
n <- length( groups ) * nstats
# calculate the offset sizes
offset <- cumsum(c(0, diff(groups) != 0))
# find the exact y coordinates for each dot in the dotchart
# and leave two spaces between each group
y <- 1L:n + sort( rep( 2 * offset , nstats ) )
# find the confidence interval positions
ci.pos <-
rep( groups , each = nstats ) +
c( 0 , length( groups ) )
# extract the confidence intervals
x <- confint( b )[ ci.pos , ]
# add the y coordinates to a new line data object
ld <- data.frame( x )
# loop through each dot in the dotchart..
for ( i in seq_len( nrow( ld ) ) ){
# add the CI lines to the current plot
lines( ld[ i , 1:2 ] , rep( y[i] , 2 ) )
}
しかし、信頼区間が画面から大きく外れることが許されているので、それは明らかに不格好です。svyby
クラスとsurvey
パッケージ全体を少しの間無視して、dotchart
そのフォーマットの信頼区間の実装をうまく見つけてください。そうすれば、私たちはあなたをもっと助けることができるかもしれません。survey
パッケージがあなたの問題の根源だとは思わない:)