table
関数は、行列状オブジェクトを返します。
> symptom <- sample(c("yes","no"), 100, prob=c(0.2, 0.8), rep=TRUE)
> disease <- sample(c("yes","no"), 100, prob=c(0.2, 0.8), rep=TRUE)
> dataset <- data.frame(symptom, disease)
> dst_S_D <-with(dataset, table(symptom, disease))
> dst_S_D
disease
symptom no yes
no 65 13
yes 17 5
したがって、Pr(D | S = "yes")=
> probD_Sy <- dst_S_D[2, 2]/sum(dst_S_D[2, ] )
> probD_Sy
[1] 0.2272727
初めてパラメーターを使用して実行したので、問題を変更しました。
> dst_S_D <-with(dataset, table(symptom, disease)); dst_S_D
disease
symptom no yes
no 9954 22
yes 24 0
そして、Pr(D | S = "yes")の0はかなり退屈だと思いました。これを何度も実行する場合は、関数を作成し、その関数をその関数で使用する必要がありreplicate
ます。
これは、無症候性グループで使用されるよりも3倍高い、症候性グループでの疾患の異なる確率を適用するデータセットを構築する方法です。
symptom <- sample(c("yes","no"), 10000, prob=c(0.02, 0.98), rep=TRUE)
dataset <- data.frame(symptom, disease=NA)
dataset$disease[dataset$symptom == "yes"] <-
sample(c("yes","no"), sum(dataset$symptom == "yes"), prob=c(0.15, 1-0.15), rep=TRUE)
dataset$disease[dataset$symptom == "no"] <-
sample(c("yes","no"), sum(dataset$symptom == "no"), prob=c(0.05, 1-0.05), rep=TRUE)
dst_S_D <-with(dataset, table(symptom, disease)); dst_S_D
# disease
symptom no yes
no 9284 509
yes 176 31