morの解析ブログ

解析疫学、リスクにまつわるメモや計算

「推定」のまわりをさぐる.教科書では「解析はMHにより行う、因子が多ければ重回帰を用いる」という風で詳しい例は少ない.独自(のつもり)な思いつきで具体に試行.
 数理を用いるべきアセスメントにも切り込む.

繰り返し処理~ランダム試行から度数

・rbinom、rhyper関数はランダムな発生数を羅列する.繰り返し処理を練習するため度数を求めてみる.
■ 
 rbinomは、2,4,3,2,…のような数がn個;シミュ回数分生成される.
       rbinom(1000,16,0.1875)
 xという点での度数は、x+1以下の累計個数とx以下の累計個数の差になる.
 また、度数が幅広くなりがちで、自動化したい.
 度数分布は、ベクトルにして保存するため結果を逐次、saveする.
おく.
 hyper関数を例にする.

         

■ script   
  dehy<-NULL #掃除
  dhh <-NULL # indi def
  datadh<-NULL
               # 関数
   dehy <- function(n){ # 関数の中で繰り返す     
        for (i in 1:n) {       #  変数iを 1 から n まで繰り返す
       dhh[i] <-sum(rhyper(1000,41,43,55)
     print(dhh)            #  途中経過を見せる
    datadh<-dhh                #  ベクトルに順次、入れておく
write.csv(datadh,"datahyps.csv")
   } }                #  消えないうちに保存する
 dehy( )                #  xの段階数を入力促す
                  #  35を指定すると 20-35 あたりに 山 ができる
--
 実行すると、パラメータの入力を促す
 dehy() が表示されるので、数値を入れる.


■ 結果
--読み出し
   datahyp= read.csv(file.choose())
   datahyp[,2]  # 度数


--度数
datahyp[,2]  #    
[1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[15] 0 0 0 0 0 1 1 18 50 86 141 157 160 157
[29] 68 49 34 10 2 0 1
--
最大は、datahyp[27,2] の 160.
plot(datahyp,type="s")をみる. 

   

 シミュ回数1000は少ないのでグラフがいびつ.
 観察発生は37だったので、単純な”袋から取り出し”予想より、曝露発生の効果は極めて高い.


 * 関数内の処理として
      print(~ )   # 途中経過を見せる
   を入れてあり、

   

   のような出力(一例).

×

非ログインユーザーとして返信する