Rで 曝露グループ egを作る記述
・曝露gをRで扱う試行
曝露gの特徴は、IDの重複なしに分類して因子効果をみること.
■ dfの名前 、作り方
eg : 曝露グループ;単純に結合
・具体
列番号 1 2 3 4 5 6 7 8
列名 "y" "wat" "tya" "mesi" "tori" "sake" "tam" "potesara"
* 曝露g 一般型
wtymtostp dr[,2]*dr[,3]*dr[,4]*dr[,5]*dr[,6]*dr[,7]*dr[,8]
から m s t p
4 6 7 8
の4因子とする.
記述
mstpzz<- dr[,4]*dr[,6]*dr[,7]*dr[,8]
mstzz<- dr[,4]*dr[,6]*dr[,7]*(1-dr[,8])
mspzz<-dr[,4]*dr[,6]*(1- dr[,7])*dr[,8]
mszz<- dr[,4]*dr[,6]*(1- dr[,7])*(1-dr[,8])
mtpzz<- dr[,4]*(1-dr[,6])* dr[,7] *dr[,8]
mtzz<- dr[,4]*(1-dr[,6])* dr[,7] *(1-dr[,8])
mpzz<- dr[,4]*(1-dr[,6])*(1- dr[,7]) *dr[,8]
mzz<- dr[,4]*(1-dr[,6])*(1- dr[,7]) *(1-dr[,8])
# m s t p
stpzz <- (1-dr[,4])*dr[,6]*dr[,7]*dr[,8]
stzz<- (1-dr[,4])*dr[,6]*dr[,7]*(1-dr[,8])
spzz <-(1-dr[,4])*dr[,6]*(1- dr[,7])*dr[,8]
szz<- (1-dr[,7])*(1-dr[,4])*dr[,6]*(1-dr[,8])
tpzz<- (1-dr[,4])*(1-dr[,6])*dr[,7]*dr[,8]
tzz<- (1-dr[,4])*(1-dr[,6])*dr[,7]*(1-dr[,8])
pzz<-(1-dr[,4])*(1-dr[,6])*(1- dr[,7])*dr[,8]
noezz<- (1-dr[,7])*(1-dr[,4])*(1-dr[,6])*(1-dr[,8])
# yと16通りの曝露
eg <- cbind(dr[,1],mstpzz,mstzz, mspzz, mszz,mtpzz,mtzz, mpzz, mzz, stpzz,stzz, spzz,szz,tpzz,tzz,pzz, noezz)
----
■ 曝露gでの発生
繰り返し処理を一部、簡略化した記述が可能.
gのy1と率
g 分母 sum( eg[ 1:258,1 ] )、分子 sum( eg[ 1:258,1 ] * eg[1:258 , i ] )
-- 繰り返し :曝露gごとの率
asum<-NULL
tasum<-NULL
atos<-NULL
tatos<-NULL
rato<-NULL
for(i in 1:17) {
asum <- sum( eg[ 1:258,1 ] * eg[1:258 , i ] ) # 分子 ベクトル
tasum<-rbind(tasum,asum) # 17行の データができる
atos <- sum( eg[1:258 , i ])
tatos <- rbind(tatos,atos) # 17 分母
rato<- rbind(rato,tasum[i]/tatos[i]) # 17個の 割合
}
----
asum<-NULL
tasum<-NULL
for(i in 1:17) {
asum <- sum( eg[ 1:258,1 ] * eg[1:258 , i ] )
tasum<-rbind(tasum,asum)
}
# 分子分母 率
egrate<- cbind(tasum,tatos,rato)
行名はrownames(egrate)<-t(colnames(eg)) で.
・検算
注意点 1行目はyなので、除いて和する.
sum(egrate[2:17,2])
[1] 258
→ 空白を除いた ID 和に一致.