Rによる条件付きロジスティック回帰分析と自作関数

[公開日]2016/11/21[更新日]2017/04/06 [カテゴリー]R言語入門 Written by  IMIN

条件付きロジスティックモデルは、ロジスティックモデルを、対応のある2値データへ拡張したものです。そして、R言語のsurvivalというパッケージには、条件付きロジスティック回帰分析を行うための関数、clogit()が入っています。

ここでは、この関数clogit()の使い方を実例を交えて紹介していきます。また、解析結果をcsvファイルへの出力まで行ってくれる自作関数も作りましたので、そちらも是非お使いください。

Rによる通常のロジスティック回帰分析はこちら→Rによるロジスティック回帰分析と自作関数例

 
 

clogit()を使った条件付きロジスティック回帰分析のやり方

clogit()関数は、

clogit(y ~ x1+x2+x3+strata(条件), data = dat)

として、使います。yには目的変数の列、xには説明変数の列を入れてください。説明変数の数だけ引数の中身も長くなっていきます。datには、解析用のデータが入ったデータフレームを入れてあげましょう。

この関数を使うためには、survivalパッケージの読み込みを必ず行いましょう。

プログラム

library(survival)

これを行わないと、

ERROR

関数 "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")

その結果、このように出力されます。↓

%e6%9d%a1%e4%bb%b6%e4%bb%98%e3%81%8d%e3%83%ad%e3%82%b7%e3%82%99%e3%82%b9%e3%83%86%e3%82%a3%e3%83%83%e3%82%af

条件付きロジスティック回帰分析では、条件付きオッズ比が推定されます。

  • スポンサーリンク

  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    CAPTCHA