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)}
/////