更新:今は機能していますが、他の方法の仕組みについてはまだ理解していません。ベクトルでこれを計算するには?
cuts <- seq(from=3, to=36, by=0.01)
for (i in cuts) {
cut_off<- i
set.seed(666)
samp_h <-rnorm(1000,mean=12,sd=3)
samp_d <-rnorm(1000,mean=18,sd=6)
a <- sum(samp_h <= cut_off)
c <- sum(samp_h > cut_off)
b <- sum(samp_d <= cut_off)
d <- sum(samp_d > cut_off)
sens <- a/(a+c)
spci <- d/(d+b)
assign(paste("ss",as.character(cut_off),sep = ""), sens)
assign(paste("sp",as.character(cut_off),sep = ""), spci)}
ss_v<- unlist(
lapply(
paste0("ss",cuts),
get)
)
sp_v<- unlist(
lapply(
paste0("sp",cuts),
get)
)
plot(1-sp_v, ss_v)
こんにちはすべて: 私は違う得るために異なる 'cut_off' を使用しようとしていたが 'SENS'(敏感)と 'SPCI'(spcificity)。上記のコードの問題は、34 'カット'のために、私は結果を得ることができるということです。しかし、私はカットを変更する場合:
cuts <- seq(from=3, to=36, by=0.01)
このメソッドは結果を返すことはできません。問題は、各ベクトルの数を計算するので、ベクトルを使って "ss_v"と "ss_p"を直接計算する方法を尋ねています。どうもありがとうございました。
バックグラウンド情報: 「健康な」患者では、抗体レベルが正常(12,32)に分布し、「病気」患者では抗体が正常(18,62)に分布しているとします。これらは「構成された」数字であり、現実的なものではないことに注意してください。 Rの「rnorm」機能を使用して、多数の病気のある健康な患者(例えば、それぞれ1000人)の抗体数をシミュレートします.15のカットオフを選択した場合の感度と特異度はどうなりますか? 3と36の間のカットオフ範囲(3,3.01,3.02、...、35.98,35.99,36など)の感度と特異度を記録します。ヒント:Rの 'seq'関数を使用してカットオフを生成し、 'for'ループまたはベクトル化された計算を使用して感度と特異度を計算します。 x軸に「1特異性」、y軸に「感度」をプロットします。
だからではなく、それらを別々に分析すること、あなたは真実 『と『抗体数を表す値』「を含む*グループ』と2000行を持つ2つの列オブジェクトを作成することができます。私が使って考えます偏りの分布はより生物的である可能性があります。log-normalまたはgammaのランダム変数を使用するかどうかにかかわらず、 'table'関数を適切に使うためにpostiionになります。 –