相互作用効果 (Interaction の p) は SCI 論文の極楽とみなすことができ、母集団をサブグループに分割して統計を実行することで論文の結果の信頼性を高めることができるため、スコアの高い SCI にはほとんど常に現れます。今日は
R 言語を使用して上記のようなテーブルを描画します。引き続き早産データを使用します。最初にデータをインポートしましょう
bc<-read.csv("E:/r/test/zaochan.csv",sep=',',header=TRUE)
bc <- na.omit(bc)
こちらは早産低出生体重児に関するデータ(公式アカウント返信:早産データ、データは取得可能です)で、2500g未満の児が低出生体重児となります。データは次のように解釈されます: 2500g 未満の早産低出生体重児かどうか、母親の年齢、最終月経体重、人種、妊娠中の喫煙、ptl の早産歴 (カウント)、ht の早産歴高血圧、ui 子宮アレルギー、ftv 妊娠初期 医師の診察回数
bwt 新生児の体重値。
まずカテゴリ変数を因子に変換します
bc$race<-ifelse(bc$race=="black",1,ifelse(bc$race=="white",2,3))
bc$smoke<-ifelse(bc$smoke=="nonsmoker",0,1)
bc$low<-factor(bc$low)
bc$race<-factor(bc$race)
bc$ht<-factor(bc$ht)
bc$ui<-factor(bc$ui)
早産の関係に対する母親の年齢の影響を研究したいとすると、さまざまな人種間の年齢と早産の相互作用を理解する必要があります。
まず年齢を 3 つのデータ グループに分割します
dat1<-subset(bc,bc$race==1)
dat2<-subset(bc,bc$race==2)
dat3<-subset(bc,bc$race==3)
これら 3 つのデータを使用してそれぞれモデルを構築します (モデルには人種のインジケーターがないことに注意してください)
f1<-glm(low~age + lwt + smoke + ptl + ui + ftv, data=dat1,
family=binomial(link = "logit"))
f2<-glm(low~age + lwt + smoke + ptl + ui + ftv, data=dat2,
family=binomial(link = "logit"))
f3<-glm(low~age + lwt + smoke + ptl + ui + ftv, data=dat3,
family=binomial(link = "logit"))
次に、各モデルの係数を抽出する必要があります。最初にモデル f1 を抽出します。
b<-summary(f1)$coeff[2,1]#提取系数
se<-summary(f1)$coeff[2,2]#提取标准误
OR<-round(exp(b),2)
ll<-round(exp(b-1.96*se),2)
ul<-round(exp(b+1.96*se),2)
次に、他のモデルでも同じ抽出係数を実行する必要がありますが、ここでは実行するループとして記述し、最初に出力関数を設定します。
jj<-function(data) {
dat<-data
fit<-glm(low~age + lwt + smoke + ptl + ui + ftv, data=dat,
family=binomial(link = "logit"))
b<-summary(fit)$coeff[2,1]#提取系数
se<-summary(fit)$coeff[2,2]#提取标准误
OR<-round(exp(b),3)
ll<-round(exp(b-1.96*se),3)
ul<-round(exp(b+1.96*se),3)
d<-data.frame(OR,ll,ul)
}
3 つのデータをリストに結合する
dt<-list(dat1,dat2,dat3)
sapply関数を使用して実行します
out<-sapply(dt,jj)
生成された結果を転置する必要がある
out1<-as.data.frame(t(out))
このようにして、結果の OR 値と信頼区間が生成されます。交互作用効果の P 値は別途計算する必要があります。ここでは説明しません。興味のある方は、以前の記事を読んでください。ここでの P 値は 0.7358 です。
p<-0.7358
次に、テーブルを設定し、空の値の行を追加します。
out2<-rbind(c("","",""),out1)
結果を入力して名前を変更します
out2$p.for.Interaction<-c(0.075,"","","")
rownames(out2)<-c("race","black","white","other")
最終結果表示