2016/11/21
2020/05/04
Rによる条件付きロジスティック回帰分析と自作関数
条件付きロジスティックモデルは、ロジスティックモデルを、対応のある2値データへ拡張したものです。そして、R言語のsurvivalというパッケージには、条件付きロジスティック回帰分析を行うための関数、clogit()が入っています。
ここでは、この関数clogit()の使い方を実例を交えて紹介していきます。また、解析結果をcsvファイルへの出力まで行ってくれる自作関数も作りましたので、そちらも是非お使いください。
Rによる通常のロジスティック回帰分析はこちら→Rによるロジスティック回帰分析と自作関数例
※R言語入門のトップページはこちら
clogit()を使った条件付きロジスティック回帰分析のやり方
clogit()関数は、
として、使います。yには目的変数の列、xには説明変数の列を入れてください。説明変数の数だけ引数の中身も長くなっていきます。datには、解析用のデータが入ったデータフレームを入れてあげましょう。
この関数を使うためには、survivalパッケージの読み込みを必ず行いましょう。
library(survival)
これを行わないと、
関数 “clogit” を見つけることができませんでした
というエラーに見舞われます。
条件付きロジスティック回帰分析の自作関数
library(survival)#ライブラリの読み込み
#datは目的変数列,説明変数列,条件列の順。fileには出力ファイル名
match_logi_fun <- function(dat,file){
x_name <- colnames(dat)[2] #説明変数の列名・後で出力
colnames(dat)[2] <- “x”
y_name <- colnames(dat)[1] #目的変数の列名・後で出力
colnames(dat)[1] <- “y”
match_name <- colnames(dat)[3] #条件の列名。後で出力
colnames(dat)[3] <- “match”
result <- clogit(y ~ x + strata(match), data = dat) #条件付きロジスティック回帰の実行
aic <- AIC(result) #AICを抽出
result_sum <- summary(result) #回帰分析の詳細な結果を得る。
result <-cbind(result_sum$coef,result_sum$conf[3],result_sum$conf[4],aic,result_sum$n) #結果をまとめる
colnames(result)[6] <- “lower .95”
colnames(result)[7] <- “upper .95”
colnames(result)[9] <- “N”
rownames(result)[1] <- x_name #出力結果がわかりやすいように列(行)に名前をつける。
names <- t(c(y_name,x_name,match_name))
names <- rbind(c(“目的変数”,“説明変数”,“条件”),names)
write.table(names,file,append=T,quote=F,sep=“,”,row.names=F,col.names=F,fileEncoding=“CP932”)
write.table(matrix(c(“”,colnames(result)),nrow=1),file,append=T,quote=F,sep=“,”,row.names=F,col.names=F,fileEncoding=“CP932”)
write.table(result,file,append=T,quote=F,sep=“,”,row.names=T,col.names=F,fileEncoding=“CP932”)
}
以上の関数に、解析用のデータを体裁を整えて、引数として入れれば、条件付きロジスティック回帰分析が行われます。この関数では、説明変数は1つにしてあります。もし、多変量で条件付きでロジスティックを重回帰させたい場合は、少々書き直して使っていただければと思います。
以下に関数の使用例を載せます。
dat = na.omit(df[,c(45,9,1)]) #元データの45列目・9列目・1列目が目的変数・説明変数・条件。
match_logi_fun(dat,”条件付きロジスティック回帰分析結果.csv”)
その結果、このように出力されます。↓
条件付きロジスティック回帰分析では、条件付きオッズ比が推定されます。
※R言語入門のトップページはこちら
Recommended