2016-03-28 29 views
0

データセット(d)には、 Y、 マーカー(= 0および1)、および グループ(= 1および2)という3つの変数が含まれています。 2つのROC曲線を同じプロットにする方法は?私はインターネットに多くを見たが、残念ながら、説明を理解していない。私は助けに非常に感謝しています!だから、ここにグループ変数を入れる方法は? (P.S.また、信頼区間でAUCを得る)。SAS。どのように2つの比較グループの2つのROC曲線を同じプロットにするか?

odsグラフィックスon;

procロジスティックデータ= dプロット= EFFECTプロット= ROC;

モデルマーカー(イベント= '1')= Y;

run;

odsグラフィックオフ;

P.S.今度はサンプルを追加します。

Y - それは人の体重

グループの(= 1、2)1 2、男性である - 女性

マーカー(= 0と1)1重量が余剰であり、0があることを意味することを意味します体重は正常です。

比較のために同じプロットで2つのROC曲線(男性と女性)を取得する必要があります。

+0

これは私にはまだ意味がありません。依存変数はマーカーです.1は太りすぎを意味し、0は正常を意味します。あなたの予測変数Yは体重です。だから体重(Y)が過体重の良い予測因子(Marker)であるかどうかを知りたいのですか?男性と女性のROC曲線が同じであるかどうかを確認しますか? – Quentin

+0

男性と女性の数は同じですか? – Quentin

+0

"ROC曲線が男性と女性で同じかどうか確認してください。"はい! "男女は同じですか?"いいえ! – Beginner

答えて

0

、各サンプルから算出したROC曲線を比較したいです。 http://support.sas.com/kb/45/339.htmlからわかるように、SASは1つのPROCステップで独立したサンプルのROC曲線を比較することはできません。あなたは自分で仕事をしなければなりません。

プロセスである:

  1. 実行PROC LOGISTIC各サンプルについて、標準エラーでROC統計(各カット点の感度/特異性)とのAUCを計算します。
  2. ROC統計のプロットを作成し、2つの曲線をオーバーレイします。
  3. AUCから検定統計量とp値を計算します。

以下は私の例です。私はこれが正しいと約束しているわけではありませんが、それは私がサポートノートの情報を理解したことです。サポートノートをお読みください。

サンプルデータ。私はまだあなたのデータを理解していないので、私は理解しているものを作った。 5人の女性と6人の男性のデータ。各人は、いくつかの診断検査のスコアと疾患の状態(1/0)を持っています。

data have; 
    input Sex $1. Test Disease; 
    cards; 
F 10 0 
F 20 0 
F 30 1 
F 40 0 
F 50 1 
M 10 0 
M 20 1 
M 30 0 
M 40 1 
M 50 1 
M 60 1 
; 
run; 

PROCロジスティックを実行し、統計を出力します。私は男性と女性のための別々のPROCステップを実行するのではなく、BYステートメントを使用しました。

ods output ROCassociation=AUCs(where=(ROCmodel="Test")); 
proc logistic data=have plots(only)=roc; 
    model Disease(event='1') = Test 
    /outroc=RocStats(where=(_source_="Test")) 
    ; 
    roc 'Test' Test; 
    by Sex; 
run; 
ods output close; 

オーバーラップしたROC曲線をプロットするためにSGPLOTを使用します。私は9.3を使用しているので、正方形のプロットを強制的にODSのグラフィックスステートメントを使用する必要があります。 9.4は、SGPLOTにaspect = 1オプションを導入しました。それはまっすぐなプロットで、SGPLOTとGTLをどれだけ愛しているかを思い出させます。私はGPLOTに戻るつもりはないと思う。

ods graphics/height=480px width=480px; 
proc sgplot data=RocStats; 
    xaxis values=(0 to 1 by 0.25) grid offsetmin=.05 offsetmax=.05; 
    yaxis values=(0 to 1 by 0.25) grid offsetmin=.05 offsetmax=.05; 
    lineparm x=0 y=0 slope=1/transparency=.7; 
    series x=_1mspec_ y=_sensit_/group=Sex; 
run; 

テスト統計を計算します。サポートノートによれば、これは大規模サンプルテストです。検定統計量は、1自由度のカイ2乗分布に従う。

data AUCtest(keep=AreaMale StdErrMale AreaFemale StdErrFemale ChiSq Prob); 
    set AUCs (keep=Sex Area StdErr 
      where=(Sex='M') 
      rename=(Area=AreaMale StdErr=StdErrMale) 
      ) 
    ; 
    set AUCs (keep=Sex Area StdErr 
      where=(Sex='F') 
      rename=(Area=AreaFemale StdErr=StdErrFemale) 
      ) 
    ; 
    ChiSq=(AreaMale-AreaFemale)**2/(StdErrMale**2 + StdErrFemale**2); 
    Prob=1-probChi(ChiSq,1); 
    format Prob pvalue6.; 
run; 

この場合も、これを真実と見なさないでください。自己責任で使用すると、私は学習段階に入っています。

+0

すべてうまくいきます!クエンティン、あなたはとても寛大です!どうもありがとう!!! (私は、SASが単純なmedstatの質問を解決する上で不必要に複雑であると思う)。残念ながら、私の「評判」は答えを評価するには不十分です。 – Beginner

+0

喜んで助けました。あなたが投票するのに十分な代理人がいなくても、私はそれの隣にあるチェックマークをクリックすることで答えを受け入れることができると思います。独立した専用のPROC ROCではなく、PROC LOGISTICの内部にROC計算を入れるSASの決定には、間違いなく制限があります。 – Quentin

0

ROC文とROCCONTRAST文を参照してください。 SAS docsの良い例

あなたがサンプルデータを与えていないが、私はあなたが何かのようにしたいと考えている:あなたは二つの独立したサンプル(男性と女性)が

proc logistic data=d plots=EFFECT plots=ROC /nofit; 
    model marker (event='1') = Y Group; 
    roc 'Y' Y; 
    roc 'Group' Group; 
    roccontrast reference('Group')/estimate e;  
run; 
+0

これは私が必要とするものではありません。不明な説明をして申し訳ありません。さて、pls、P.S.を見てください。上記。 – Beginner

+0

2つの独立したサンプルがあるので、それはあなたが望むものではありません。あなたが1つのサンプルを持っていて、2つのプレディクタを比較したい場合、上記はうまくいくでしょう。私は答えを追加します。 – Quentin

関連する問題