morの解析ブログ

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

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

曝露パターン一致のものを比べる: w;第3の因子

■ 集まったデータ内で、ある因子wに注目するとき、その効果を調べるには、それ以外の因子への曝露が一致するものを探して比較するとよいのではないか.Rの記述は、やっかいになりそうだが・・.


▼ wは、「第3の因子・・」で浮かんだ1つの因子であり、別角度で調べる.ctrl gとして同じ条件にしたい.w1のなかでw以外の曝露状況を調べる、それらに一致するw0を探しだして比べるのがよいだろう.
     w1  取り出すw0
       1010           1010
               1001           1001
               1100            1001   w1 の2番目に一致するから採用       
                                   1100   〃 3 〃


 wを含めデータは7因子に絞っている*.w0は、すべてを探し出して計数する.下の3から8の”曝露状況*をそろえる.               *年齢性別などは省いている.


・name  [,1]  [,2]  [,3]  [,4]  [,5]     [,6]   [,7]    [,8]
  [1,]  "y"  "wat" "tya" "mesi" "tori"  "sake" "tam" "potesara"


・抽出
 w1をまず、抽出する
  リストアップする
   dr[dr[,2]==1,]                                   # w1 を抽出  26 ID  のリスト
        これを
   dofw                  #   w1である ID たち
  としておく


  # 何行目か  ;ID番号 を調べるには・・
   idw<- rownames(dr[dr[,2]==1,])       # w1である、ID番号  羅列
     IDがわかる; ”ID” 
   ちなみに、 数値にするには・・
   as.numeric(idw[ i ])                              # IDを 数値とした
       for(i in 1:26){                         #   該当ID 行数を全部書き出せる
       print(as.numeric(idw[ i ]))
       }      


    #  [1] 6 12 37 54 59 60 75 77 93 106
    # [11] 121 136 144 152 153 158 160 171 180 181
    # [21] 208 209 212 241 249 263


・w1での発生率  11 / 26
  w1は、w1のdf リストである
  sum(w1[,1])/nrow(w1)            # 11 / 26
     0.4230769  
  これは2×2表の 曝露での発生率そのもの.
  ------------------
■ w1のIDたちと同じ曝露のIDをさがす
 ・同じ曝露状況であるとは ・・・・・ 差の絶対値の和が 0 である
  w1のIDの 3:8  の値が 一致すること
    
 ・dofw;w1を構成するIDとデータである
 ・w1のIDをkにより呼び出し、元データdrとの差の絶対値和を計算する 


  kabs<- NULL      #   k番目に対する 絶対値和 全員分 vec
       alb<- NULL                     
  for( k in 1:26 ) {
 kabs <- abs(dr[ ,3]-dofw[k,3] ) +abs(dr[,4]-dofw[k,4])+abs(dr[,5]-dofw[k,5])+abs(dr[,6]-dofw[k,6])+abs(dr[,7]-dofw[k,7])+abs(dr[,8]-dofw[k,8] )
         alb<-cbind(alb,kabs)   }


・   kabs  は 、kに対する絶対値和 の 全ID分の vector
・ albは、kごとの絶対値和がならんだdf


 colnames(alb)<- idw    #  w1の各ID を列名にする     下図ではvk

      ‥ ・・・ 26列

      :
              [258] 
            全員


・alb
 行は 全員のID 列はw1のもののID名、中身数値が、それぞれの絶対値和
 * ID同士で比べると、3と9など曝露状況が一致するものがある.


 w0 のID=232 個  
   idw0<- rownames(    dr[dr[,2]==0,]  ) # ID 羅列
 IDが出せる; これは数値ではない
 粗なtableのs0に一致
 w0のなかの 曝露一致のものが ほしい
,,,,
 yall は、yを含んだ、曝露数を網羅する 固定データ表 
   yall<-cbind(dr[,1],alb)      

        


 yall からw1とw0を比較するために、drの2列目w曝露をつなげておく.これを
  yw
とする.28列目が、wである.


参考:
  例 sum(yw[,k+1]==0)   # kに対応する絶対値和0 のID数 


■ いずれかが絶対値0
 いずれかが絶対値0 つまり、w1に対応するIDは、
 %in% :”含まれる” を用いて zerodf として取り出す
    zerodf<- NULL
   for (i in 1:258) {
     zeroy<-   yw[ i ,3:27]%in% 0      #  true か false
         zerodf<-rbind(zerodf,sum(zeroy))    #  全ID分  絶対値0の個数 df
        }
  
  rownames(zerodf)<- rownames(dr)
zerodfは、IDごとの”w1と同じ曝露パターン”と 何個  同じかをもつvec


 概要 zerodfの・・ 
  max( zerodf)   10  最大10  重複している 
  sum(zerodf!=0)        191        w1のどれかと曝露が一致するID数
               *  0でない;重複する因子がある 


               w1との比較   w0:w1のいずれかの曝露状況と一致するもの
                                              zerodf!=0 の2×2表                                                                 
              w1                               w0                                                
  y1  dr[,1]*(dr[,2])*(zerodf!=0) 11          dr[,1] * (1-dr[,2])*(zerodf!=0)       99    110
  y0  dr[,1]*(dr[,2])*(zerodf!=0) 15    (1-dr[,1]) * (1-dr[,2])*(zerodf!=0)       66      81 
                                                                                                                       165    191
                                                                                                  sum () を省略
  OR 0.4889
■ w0
 w0は多い.
  zerodf[zerodf[,1]>0],]
■ リスク値
 wに関する粗tableでは、w0は y1;128、y0;104 だから
  cOR  :  0.596
 となる.
 総当たりMHORでは、
  MHOR :  0.52 <
 であった.上のように絞ったtableでは、抑制性がより明らかな値で、
  OR   :     0.49
 となった.


▼ RD
      粗なtable       絞ったtable
   11/26-128/(128+104)  11/26 - 99/165  
   -0.1286         -0.177
 
■ まとめ
・曝露群に対して、最も似た非曝露群を用意してw効果を調べた.世には症例群に対して対照群を設けるやり方があるが・・.
 曝露状況のそろえ方は、元のもののいずれのIDの状況に一致するものとしたので、曝露パターンに偏りないとの前提を付けたと同じ.
 影響があるかどうかわからない因子効果をも打ち消すような試行となる.
 あえて例数を減らしてでも、対照を選べば、他の不明な因子の影響を避けることができそうだ.
・wは「第3の因子・・」で特徴は垣間見えていたが、対照群に工夫すると、抑制性がはっきりしたと思える.


■ 記述
  ネタとして、
   as.numeric 
   yw[ i ,3:27]%in% 0 
   f!=0
  計算
   曝露数を度数にし、一致するものから計算する記述
    abs(dr[ ,3]-dofw[k,3] ) ;絶対値の和

×

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