私は現在、Rpy2を使用してコックス比例ハザードモデリングを行っています-私の質問は他の関数とそれらを呼び出した結果もカバーすると思います。
関数を実行すると、関数の結果をベクトル形式で含む変数ができます。これを明示的に DataFrame ( resultsDataFrame = DataFrame(resultVector)
) に変換しようとしました。これを行ってもエラーは返されません。ただし、resultsDataFrame.to_csvfile(filename)
次のエラーが表示されます。
Traceback (most recent call last):
File "<pyshell#171>", line 1, in <module>
modelFrame.to_csvfile('/Users/fortylashes/Documents/Matthews_Research/Cox_PH/ResultOutput_Exp1.csv')
File "/Library/Python/2.7/site-packages/rpy2/robjects/vectors.py", line 1031, in to_csvfile
'col.names': col_names, 'qmethod': qmethod, 'append': append})
RRuntimeError: Error in as.data.frame.default(x[[i]], optional = TRUE, stringsAsFactors = stringsAsFactors) :
cannot coerce class ""coxph"" to a data.frame
さらに、私が単純に行うと:
for result in resultVector:
print (result)
モデルで使用されるデータセットの各エントリに関する情報を含む、結果の非常に長いリストを変数ごとに取得します (つまり、9,000 レコード x 9 変数 = 81,000 の不要な結果)。本当に必要な結果は、このベクトルの下部にあり、次のようになります。
coef exp(coef) se(coef) z p
age_age6574 -0.057775 0.944 0.05469 -1.056 2.9e-01
age_age75plus -0.020795 0.979 0.04891 -0.425 6.7e-01
sex_female -0.005304 0.995 0.03961 -0.134 8.9e-01
stage_late -0.261609 0.770 0.04527 -5.779 7.5e-09
access -0.000494 1.000 0.00069 -0.715 4.7e-01
Likelihood ratio test=36.6 on 5 df, p=7.31e-07 n= 9752, number of events= 2601
*注: 最初の結果 (私が話していた 9,000 x 9) でデータが報告されたが、実際にはモデルで使用されなかったいくつかの変数がありました。
このデータを明示的に取得し、それを 1 つの長い順序付けられた行に入れ、それを csv ファイルに出力する方法があるかどうか疑問に思っていましたか?
::::アップデート::::
呼び出すtheModel.names
と、数値インデックスで呼び出すことができるさまざまなメジャーのリストを取得します。
[1] "coefficients" "var" "loglik"
[4] "score" "iter" "linear.predictors"
[7] "residuals" "means" "concordance"
[10] "method" "n" "nevent"
[13] "terms" "assign" "wald.test"
[16] "y" "formula" "call"
これから、指数化できる係数を取得できます。ただし、必要な p 値、z スコア、尤度検定比は見つかりませんでした。