morの解析ブログ

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

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

Rで計算.ベクトル化度数から 2つのMHORの起こりやすさまで

・データから、度数を計算するとき、論理式が使えるとわかった.
因子 tとsで調べるとき、
・層化周辺度数を固定すると、度数はBG発生数が取りうる範囲の変数による関数となる.
・ベクトルを変数とした関数はベクトルになる.これでRの記述がより簡単になる.
・度数・MHOR・オッズ・ORベクトルを作り、保存する記述.


■ データから欠測IDを取り除く処理 
  datacf <- complete.cases(data7)
  dr <- data7[datacf,]

         

■ 周辺度数  論理式で短めに書ける
 周辺度数をデータから読み出す、複数の方法がある.
  ① いったんtable度数を作る   or  ② 直接データから読む
         ↓              ↓
 m0<-a0+b0   ↓              ↓  
  a0 <- sum((1-dr[,"sake"])*(dr[,"y"])*dr[,"tam"]) など・・  ↓
                   or    m0 <- sum(  dr["y"] *  ( 1-dr["sake"] ) ) として計算.
 n0<-a0+b0+c0+d0                    or    sum( 1-dr["sake"])
 k0<-a0+c0            or    sum( (1-dr["sake"])*(dr["tam"]))   
  
 m1<-a1+b1
 n1<-a1+b1+c1+d1
 k1<-a1+c1

 度数、周辺度数はデータから論理式で計算.保存できる.
  * 読みだした度数は、1通りしかない.
  * 周辺度数は、固定されていてよく、のちの計算に使う.


■ 度数ベクトル  小発生度数がとりうる値のベクトルとみなし、他の度数はその関数とする
 起こりやすさを扱うために、周辺度数を固定するが、度数は取りうる範囲がある.
 s1の y1t0度数;b1 を i とする.
 度数、周辺度数は、i の簡単な関数となる.
 s1では、 
   a1 b1                 m1-i                i                m1
   c1 d1              k1-m1+i        n1-k1-i         n1-k1        
                             k1               n1-k1             n1
s0では、                   
  a0 b0        m0-b+ i              b-i               m0
  c0 d0           k0-m0+b-i       n0-k0-b+i       n0-m0
                               k0                 n0-k0              n0


 ここで、tableから、
   t0のb = 7  
 また、 
   b1+b0=b 
 度数は可変、BGを一定との条件から 、度数ベクトルを作る.
    i <- c( 0:7 )
 すると、★  iを含む上の関数;度数や指標 もベクトルになる.


■ MHORベクトル
 ベクトル化された度数;A1-D1,A0-D0を作ってMHORベクトルを作る.
          *A1 <-NULL とした後、計算する
     A1<- m1-i  B1<-  i     A0<- m0-b+ i     B0<- b-i 
  C1<- k1-m1+i D1<-n1-k1-i     C0<- k0-m0+b-i D0<- n0-k0-b+i


 要素を計算するのと同じように式を組むと、計算結果からなるベクトルができる.


▲具体例:2つのMHOR
 ・sにより調整したtのMHORは、
  mhts <-(A1*D1/n1+A0*D0/n0 )/(B1*C1/n1+B0*C0/n0) 
       mhts                                                         ↓  MHOR[4]  ;  i=3
               [1] 10.237861 10.086525 9.768871 9.318758 8.778195
               [6] 8.188938 7.586553 6.997716
              ・mhtsは、i=3のとき、既存関数の結果と一致.
 ・tにより調整したsのMHOR、mhst も同様に計算できる.
  mhst <- (A1*C0 +B1*D0 ) / (A0*C1 +B0*D1 ) 
               [1] 0.9563197 0.8822472 0.8132059 0.7490558 0.6896272
               [6] 0.6347282 0.5841509 0.5376775
          
■ oddsベクトル
s1は、
   s1t1od <- A1/C1 
   s1t0od <- B1/D1 
s0は、
        s0t1od <- A0/C0 
        s0t0od <- B0/D0   

 
具体例:s1におけるtに関するORベクトルは、
  s1t1od/s1t0od 
   [1] Inf 23.852459 10.838710
   [4] 6.534392 4.406250 3.147692
   [7] 2.323232 1.746269


■ オッズとORのイメージ;観察データから
 オッズやORのイメージを忘れないよう並べておく.
 観察データ  ; i=3 の場合に相当    数値は概略

    

・4つのオッズ、4つのORが現れる.
 s1でのtに関するORは、sの抑制下でのtの効果がみえ、s0でのそれはtの効果がより強く表れる.
 t1でのsに関するORは、sのもつ抑制性を示し、t0では幾分の生起性を示す.
 ORベクトルでは、iの範囲で s1t1がいずれも1を上回っている.


■ 起こりやすさ BGに課する条件から
 i がとりうる範囲で、i ごとに起こりやすさが割り付けられると考える.
   dhyper(0:7,7,38,16)  ; t0におけるsの超幾何分布
 と知る.観察は、[4]  i=3 になっていた.
   [1] 0.0343938535 0.1674831125 0.3140308359
   [4] 0.2930954468 0.1465477234 0.0390793929
   [7] 0.0051175395 0.0002520955 


■ MHORの起こりやすさ 
 CI的にみれば、 0.05あたりのMHOR;mhts 10 から 1-0.04あたりの mhts 8、となる.
 ;過去記事での信頼区間と異なる点に留意.
   mhstは、
   [1] 0.9563197 0.8822472 0.8132059 0.7490558 0.6896272
   [6] 0.6347282 0.5841509 0.5376775


 ▽ 計算結果の解釈 ▽
 i  の取りうる範囲全域で 1を下回り、上の起こりやすさとあわせて、明確な抑制因子とわかり、他の解析結果と異なる鋭さと思える.


■  最近のR練習から
・データから、めぼしい因子2つについて、検討するとき、
 ① 周辺度数一定
 ② 因子間の関係を許容しつつ、BG一定
 の条件を付け、
 ① Rの記述      繰り返し処理、論理式、ベクトル式といった簡潔な書き方
 ② データの保存
 について改良できた.


■ 超幾何関数の利用による効果
 補正によらず、”超幾何分布による信頼区間”を見ることで、従来より明確な因子の効果の値が得られる.


***蛇足
    iをベクトル化しないで度数ベクトルを作る
A1<-NULL
for(i in 0:7) { A1<-c(A1,m1-i)}  
B1 <-NULL
for(i in 0:7) {B1<-c(B1, i)}
C1<-NULL
for(i in 0:7){C1<-c(C1, k1-m1+i)}
D1<-NULL
for(i in 0:7){ D1<-c(D1,n1-k1-i)}


A0<-NULL
for(i in 0:7){ A0<-c( A0,m0-b+ i )}
B0<-NULL
for(i in 0:7){ B0<-c( B0,b-i)}
C0<-NULL
for(i in 0:7){ C0<-c(C0,k0-m0+b-i )}
D0<-NULL
for(i in 0:7){ D0<-c(D0,n0-k0-b+i)}




   /////

×

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