morの解析ブログ

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

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

Rで 因子の性質を逐次調べる 簡潔な記述 &例r1r2

■ 簡略な、因子の性質を調べる記述 点推定
  ;記事「詳細 osw事例《r1r2》で 因子の性質を逐次調べ plotする」  
 を簡潔に書き換える osw事例データで 逐次因子を仕分ける式を組む
 記述例では、生起抑制因子1,2個を一括して式化 汎用性を考えて曝露はdfから読む
・率のぶれ幅・無関連因子を仕分けることが課題になる


   lm系多因子モデル ← データ → ベクトル化 → 論理グループ
      ↓          ↓ 因子選択
   交互作用 難   
 論理グループ
                影響因子 ;生起・抑制・阻止 BG     
               ↓ G分け
                因子独立 ;加工     
                ↓ 単純化
                層化的 : 率が個々Gに決まる


■ 因子選択 ; 度数で調べる ~ riskで逐次調べる記述
生起因子の確認
 以前の記事「生起:vi ,tyap,cake、抑制 :w,rol,choco、阻止: jero,cabe 」とみたてたのだが、生起因子かどうか  vi ty ca ?   ca:cake  
 ひたすら調べる式  ・・
   yos*(1-vi)*(1-ty)*(1-ca) の和は 0 ! 
 なのだが、下図のとおり tyには実は生起性がなく、vi、caが生起とすべき
  

          

    sum(yos*(vi)*(ty)*(ca))などで発生数をひたすら調べた結果   事例全体の発生数から
 このようなことから、生起因子をvi,caと決め 、抑制2因子の条件下で、阻止性を調べる記述としてみる 
・記述例 
  曝露ありなしについて発生率をplotする
  曝露数or非曝露数<10が信頼できないので強調する記述を追加
                      # ▼  riskを生起、抑制、阻止にわたって逐次調べる記述 ▼
        rd_<- NULL
      y1<- yos    # ↓  dfでなく、ベクトルで記してもよい
      v1<- 1- (1-osd[,13]) *(1-osd[,12])   #    vi または tyap *(1-osd[,8])    caを生起vとし       
      v2<- 1- (1-osd[,7])*(1-osd[,14])    #    r  または choco  を抑制vとおく 
       r1_<-NULL
       r2_<-NULL 
     plot(xlim=c(0.5,0.75),ylim=c(0.65,0.8),"")
   for (k in 1:15)      #▼ riskを生起、抑制、阻止にわたって逐次調べる記述▼▼▼
         { 
            v3<-osd[,k]  
     r1<-sum( v1*v2*y1*v3)/sum( v1*v2*v3)           # 簡略な式 
                     #     r1p <-(+ 1+ sum(  v1*v2*y1*v3))/sum( v1*v2*v3)     # +1
        #     
 r1m <-( -1+ sum(  v1*v2*y1*v3)  )/sum( v1*v2*v3)    #-1
     r2<-sum( v1*v2*y1*(1-v3))/sum( v1*v2*(1-v3))     # 簡略な式
                  #       r2p <-(+ 1+ sum(  v1*v2*y1*(1-v3)))/sum( v1*v2*v3)    # +1
           #      r2m <-( -1+ sum(  v1*v2*y1*(1-v3))  )/sum( v1*v2*v3)  # -1
                r1_<- c(r1_,r1) 
                r2_<- c(r2_,r2)   #  ↓ ばらつき記述--観察度数からくる・・
    text(  x=r1 ,y=r2,"---",cex=exp(5-sum( v1*v2*v3) ),col="gray" )  # 信頼のなさをlogistic関数から表現
       text(  x=r1 ,y=r2,"|",cex=exp(5-sum( v1*v2*(1-v3)) ) )   
      text(  x=0.6+0.01*k, y=0.6+0.01*k ,"・",cex=0.7  )   
                  text(x=r1,y=r2,"*") # risk 値 plot 
                       #      text(x=r1p,y=r2p,"*",cex=0.7) # risk 値 plot 
                  #     text(x=r1m,y=r2m,"*",cex=0.7) # risk 値 plot 
           }    #    ↓ 図 ・ 表
              #    text(x=r1_,y=r2_,"*") # risk 値 plot 
              text(x=r1_,y=r2_+0.005,  colnames(osd),cex=0.7)     # r1,r2ともベクトルのままplot
    text(x=r1_+0.006,y=r2_+0.01,round(r1_-r2_,3),cex=0.7)
                # ▼ riskを生起、抑制、阻止にわたって逐次調べる記述▼▼▼  


 ・結果
  r1とr2が因子ごと簡潔な式から計算され保存される

          vi  r ch 曝露下での各因子 有無ごと risk  RD付き 
                   milkのばらつき 曝露数が小さく横軸方向に広がる 
 この記述はロジスティック関数を用いて信頼のなさを表し、(非)曝露数kの小さい;10以下のIDの場合、 "|" や "--" がみえる またこのとき、大きい方はG平均に近づく 
 コホートであるから、r1r2プロットでは実は、ばらつく方向は右下がりになり、それぞれのデータが揺れた時の取りうる幅は往々重なる 
 tyなどに阻止性を疑いうる watには抑制性があるかもしれない
■ 記述の用法  
・生起因子から逐次探すには、
  生起を探すとき   i=1  j=1 とし    kを走らせる 生起が決まれば、・・
  抑制を 〃   i=生起因子 j=1   〃      抑制が決まれば、・・
  阻止を 〃   i=生起因子 j=抑制 〃 

・ただし、生起因子を ひたすら調べるには、
  sum( v1*v2・・・y1) が >0 となる因子を度数だけから探せる 
  例:sum(y1*(1-vi)*(1-ty)*(1-ca)) 
         ↑ ありなし・因子を代えて yに絡む因子かを 数値:度数で調べる 
 生起因子は、生起性があるもの という定義だからである
 また、生起因子以外のGを調べる場合、v1を1-v1として、条件を変えながら手探り的に率をみるとよい このさい、いずれのレベルの発生をBGとするかなどを考えることができる   

■ まとめ
・簡潔な記述 因子の仕分けは、総当たり調整や、曝露非曝露riskをみる方法で行ったことがある
 RDで平面にプロットする、記事「 Rの汎用記述 MHRDの総当たり計算 ~ osw事例データ」で試した 
   Gのriskでみる方法は、記事「詳細  osw事例《r1r2》で  因子の性質を逐次調べ plotする」で試した
 これらは、記述がやや長い
・調整後比較する方法;総当たり・・やcRDで選別する方法を試してきたが 新しい式は、Gを絞っていくことを積で表すことで、より簡潔になった
■ 課題 信頼性や、とりうる幅
・信頼性と、曝露数により起こりうるばらつき、効果による因子の仕分けを次回の記事で記す

×

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