morの解析ブログ

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

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

メモ MHOR ~R関数(Fisher、MH)・手計算;点推定

・Rで必要になるデータの整理、手計算MHORをメモする.
 Fisherの正確確率               ← ORのみ ;記述訂正
 MH関数・正確確率付き             ←   MHOR   ;記述訂正


■ データの処理
 空白行を探知し、削除する. 
  例  c6 <-complete.cases(d6)
     dr <- d6[c6,]            dr:操作するデータ
・表  
  yts_ts <-xtabs(~y+tam+sake,data=data7)
 2つのtab:sありの方のtab と なしtab


    Rでの表現       表計算での表現   
    > yts_ts[,,2]

   

■ Fisher's Exact Test
 個々の表に対して、Fisher's Exact Test するR関数があって、


fisher.test(yts_ts[,,1])
--------
Fisher's Exact Test for Count Data


data: yts_ts[, , 1]    サケあり層だけをtest
p-value = 2.705e-06
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
3.562507 56.561822
sample estimates:
odds ratio
12.41095
---------
 %tileが広い.
  
・図示
 表ごとに、plot の前に t ( ) で転置しておく.        《 転置は t()》
          例 t_y<-t(yts_ts[,,2]) 意味: sakeあり:2の表を 転置する
 上左表と同じ順で図示される.
 

     

・手計算によるMH調整ORを組む.

        を書く.

 R script 
   MHOR_yt<-(as*ds/sums+a*d/sum_)/(bs*cs/sums+b*c/sum_) 
       サケあり、なしtab の aからd,n
   MHOR_yt
   [1] 9.318758   


 手計算でのMHORは、関数 mantelhaen.test;statsからのものと一致(下記).
 ところで、MHORはどうしても各層MHORの  ”間をとっている” 感が残る.
    

        

 また、MHORのCIは、漸近的でないものをどう考えるか、は根の深い疑問.
---------------
■ mantelhaen.test  R関数
       : 基本機能であるstats    3元分割表が必要 
 mantelhaen.test(yts_ts)
 Mantel-Haenszel X-squared = 29.231, df = 1,
 p-value = 6.424e-08
 ・・ 95% 3.868831 22.445863
 ・・ cMH 9.318758
- 
なお、exact=TRUE とすると【fisherの正確確率】に・・また、common odds ratio も conditional MLE になるのだそうだ;奥村氏.
-
mantelhaen.test(yts_ts,exact=TRUE)
 Exact conditional test of independence in 2 x 2
 x k tables
 data: yts_ts
 S = 38, p-value = 2.284e-08
 alternative hypothesis: true common odds ratio is not equal to 1
 95 percent confidence interval:
 3.771102      27.427056 ← exactなしだと 3.6   22 くらい
 sample estimates:
 common odds ratio
 9.467893           ← exactなしだと9.319くらい 
 -

×

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