morの解析ブログ

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

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

Rの汎用記述 MHRDの総当たり計算 ~ osw事例データ

■ 事例データに汎用なMHRDを計算
■ 記述


  ----まずは、事例のデータを入れる;データの複写
 t.data <-        #   調べるデータ名を入れる   実例 oswの ”  osd ”  を入れる
  ----


【n×n因子 MHRD】
  ----カラム数、行列定義;枠作り、カラム名、データ埋め、保存
   #  カラム数
    n.col<- ncol(t.data) 
         #   行列の枠づくり MH行列 曝露行列 
 matrix.mh <-matrix(0, nrow =n.col , ncol = n.col)  # 行列を定義;MHわく
 matrix.bak <-matrix(0, nrow =2      , ncol = n.col )     # 行列を定義;曝露数わく

  colnames(matrix.mh)<- colnames(t.data)            # 列名、行名を データから写す
  rownames(matrix.mh)<- colnames(t.data)
  case1mxmh<-matrix.mh                 # 事例ごとの行列の名前をふる 
  case1mxmh                         # データ入れる行列完成
          # 枠づくりおわり   


        # --------- Rの汎用記述 MHRDの総当たり計算 -----------------  
  mhrd <-NULL         # 【n×n因子MHRD】
  tmhrd<-NULL
  for (x in 1:n.col) {            # x  全因子を調整対象とし、、、、       
  for (y in 1:n.col) {             # y  因子固定することも  
  a1 <- sum( t.data[,1] *t.data[x]*t.data[y] )    # 曝露 サブg
  b1 <- sum( t.data[,1] *(1-t.data[x]) *t.data[y])   # 
  c1 <- sum( (1-t.data[,1]) *t.data[x] *t.data[y])  
  d1 <- sum( (1-t.data[,1]) *(1-t.data[x])*t.data[y] )
  a0<- sum( t.data[,1] *t.data[x]*(1-t.data[y]) )  # 非曝露 サブg  
  b0 <- sum( t.data[,1] *(1-t.data[x]) *(1-t.data[y] ) ) 
  c0 <- sum( (1-t.data[,1]) *t.data[x] *(1-t.data[y]) )  
  d0 <- sum( (1-t.data[,1]) *(1-t.data[x])*(1-t.data[y]) )
# 式 ;    ありなしによる、 の mhrd;【n×n因子MHRD】;
  n1 <-a1+b1+c1+d1
   n0 <-a0+b0+c0+d0 
   k11<-a1+c1          #  曝露数
k10<- b1+d1 
k01<-a0+c0        
k00<- b0+d0
    rd1 <- a1/k11-b1/k10
    rd0 <-a0/k01 -b0/k00
wei0 <- k01*k00/(k01+k00)
wei1 <- k11*k10/(k11+k10)       #  ↓  【n×n因子MHRD】
   #   mhrd<- (wei0*rd1+wei1*rd0)/(wei0+wei1)    ← まちがい?
    mhrd <-  ( wei0*rd0+wei1*rd1 )/(wei0+wei1)  # ←

    case1mxmh[x,y] <-round(mhrd,digits = 2)        # 行列に入れる  有効数字制限
      }
   }                               # 」 総当たりMHRD 【n×n因子MHRD】 case1mxmh   # 

 -----


  # 保存データは、個別に変えておく 
oswmh <- case1mxmh  #  osw事例なので、その総当たりMHRDであること
       ↑ 個別のデータ名でMH保存
 -----


表示                   Rの汎用記述 MHRDの総当たり計算
 全体

 coln<- colnames(tem.data) # のちの記述のため


別記事で グラフとして図示

×

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