Rとstanでベイズ統計ができるなら、以下のコードで実行可能。
パッケージ rstan と BEST(信頼区間グラフ描出用)が必要
library("BEST")
library("rstan")
rstan_options(auto_write = TRUE)
options(mc.cores = parallel::detectCores())
options(scipen = 5)
model.string='
data{
int n; // sample size
int x; // number of positive test
real<lower=0,upper=1> sen; // sensitivity 0.7
real<lower=0,upper=1> spc; // specificity 0.9
real<lower=0,upper=1> ul; // uniform(0,ul)
}
parameters{
real<lower=0,upper=1> prev; // prevalence
}
transformed parameters{
real<lower=0,upper=1> p;
p = prev*sen + (1-prev)*(1-spc) ; // probability of positive test result
}
model{
x ~ binomial(n,p);
prev ~ uniform(0,ul);
}
'
writeLines( model.string , con='model.stan' )
corona1.model=stan_model('model.stan')
# saveRDS(corona1.model,file='corona1.rds')
# corona1.model=readRDS('corona1.rds')
PCRs <- function(N=1000,X=10,UL=1,SEN=0.7,SPC=0.9,verbose=FALSE,...){
data = list(n=N,x=X,sen=SEN,spc=SPC,ul=UL)
fit.corona = sampling(corona1.model, data=data,
seed=1234,control=list(adapt_delta=0.99),...)
if(verbose) print(fit.corona, prob=c(0.025,0.5,0.975),pars=c('prev'),digits=8)
ms=rstan::extract(fit.corona)
BEST::plotPost(ms$prev,showMode = T,xlab='prevalence') ; lines(density(ms$prev),col='skyblue')
c(mean=mean(ms$prev),HDInterval::hdi(ms$prev)[1:2])
}
数学 統計に詳しい人が語るコロナウイルス
■ このスレッドは過去ログ倉庫に格納されています
102132人目の素数さん
2020/03/24(火) 08:42:02.80ID:TnHQvRcs■ このスレッドは過去ログ倉庫に格納されています
ニュース
- Matt、文春報道に反論「そのような事実はありません」「証拠がこちらにある」「本当に笑っちゃうわ」 [muffin★]
- 【広島】木刀で無職夫を十数回殴打、傷害疑いで作業員の女を逮捕 死亡との因果関係を捜査へ [ぐれ★]
- 原哲夫、急遽描いた『あしたのジョー』に反響 ちばてつやさんへの追悼イラストに「上手すぎ」「力石にも見える」 [muffin★]
- 消費減税「極めてコスパ悪い政策」 渡辺・東大名誉教授が国会で意見 ★4 [蚤の市★]
- 【文春】「Mattから性被害を受けた」警察に複数の被害届が提出されていた《桑田真澄氏の次男》★3 [Ailuropoda melanoleuca★]
- ヒカル、今森茉耶をメンバーシップ限定動画に起用へ 炎上後に初対面「俺が育成していこうかなと思って」 [muffin★]