1

barplotおよびdotchart(調査パッケージから)と同様に、barNest(plotrixパッケージ)は、svybyオブジェクトのプロットをその場で生成することを目的としていましたが、信頼区間もプロットしました。ただし、barNest.svymeanは調査データを処理していません。別の方法は、調査プロット関数dotchartの上に信頼区間をプロットすることです。

library(survey)
data(api)
dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc)
#just one variable        
a<-svyby(~api99, ~stype, dclus1, svymean)
#several variables
b<-svyby(~api99+api00, ~stype, dclus1, svymean)
dotchart(b)

どうすればいいのかわかりませんが。誰かがこれを解決した場合は、それを自動化して(さまざまなサイズのsvybyオブジェクトに適用するコードを作成することによって)、dotchart.svystat{survey}に組み込むこともできます。グループ間のグラフィック比較がはるかに簡単になります!標準誤差は、bから、またはSE(b)を使用して抽出できます。

4

2 に答える 2

2

そのため、オブジェクトクラス(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パッケージがあなたの問題の根源だとは思わない:)

于 2012-12-29T20:01:35.947 に答える
0

アンソニーの最後のビット(ld <-data.frame(x)から)に新しいドットチャートプロット(最小値と最大値)を追加すると、彼が概説した問題が解決します。

ld <- data.frame( x )
dotchart(b,xlim=c(min(ld),max(ld)))#<-added
for ( i in seq_len( nrow( ld ) ) ){  
  lines( ld[ i , 1:2 ] , rep( y[i] , 2 ) )
}

しかし、私はアンソニーに同意します:プロットは見栄えがよくありません。彼の知識とプログラミングスキルを共有してくれたAnthonyに感謝します。特にMapi00の場合、信頼区間も非対称に見えます(これは正しいかもしれません)。誰かがこれを他のソフトウェアと比較しましたか?confitはdf(自由度)を指定する必要がありますか?

于 2012-12-30T08:31:14.453 に答える