{"id":960,"date":"2022-02-24T23:51:00","date_gmt":"2022-02-24T14:51:00","guid":{"rendered":"https:\/\/obgyn.jp\/?p=960"},"modified":"2022-03-13T20:00:55","modified_gmt":"2022-03-13T11:00:55","slug":"logrank-cox","status":"publish","type":"post","link":"https:\/\/obgyn.jp\/?p=960","title":{"rendered":"Python \u306b\u3088\u308b Kaplan-Meier \u6cd5\u3001\u30ed\u30b0\u30e9\u30f3\u30af\u691c\u5b9a\u3001Cox \u6bd4\u4f8b\u30cf\u30b6\u30fc\u30c9\u30e2\u30c7\u30eb"},"content":{"rendered":"\n<p><a href=\"https:\/\/lifelines.readthedocs.io\/en\/latest\/Quickstart.html\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" title=\"lifelines\">lifelines<\/a> \u3092\u4f7f\u3044\u3001\u30ed\u30b0\u30e9\u30f3\u30af\u691c\u5b9a\u304a\u3088\u3073 Cox \u6bd4\u4f8b\u30cf\u30b6\u30fc\u30c9\u30e2\u30c7\u30eb\u5206\u6790\u3092\u884c\u3046\u3002<\/p>\n\n\n\n<p>\u5fc5\u8981\u306a\u30e9\u30a4\u30d6\u30e9\u30ea\u3092 import \u3059\u308b\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"enlighter\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">!pip install lifelines #\u5fc5\u8981\u306a\u5834\u5408\u306e\u307f\nfrom lifelines import KaplanMeierFitter, CoxPHFitter\nfrom lifelines.statistics import logrank_test\nimport pandas as pd<\/pre>\n\n\n\n<p>\u901a\u5e38\u306f Excel \u7b49\u3067\u4f5c\u6210\u3057\u305f CSV \u30d5\u30a1\u30a4\u30eb\u3092 R \u306b\u8aad\u307f\u8fbc\u3093\u3067\u5206\u6790\u3059\u308b\u3002\u3057\u304b\u3057\u3001\u3053\u3053\u3067\u306f\u4fbf\u5b9c\u7684\u306b\u4ee5\u4e0b\u306e\u7c21\u5358\u306a\u30c7\u30fc\u30bf\u30d5\u30ec\u30fc\u30e0\u3092\u4f5c\u6210\u3057\u3001data \u3068\u3044\u3046\u5909\u6570\u306b\u683c\u7d0d\u3057\u3066\u304a\u304f\u3002\u6253\u3061\u5207\u308a = 0 \u306a\u3089\u6253\u3061\u5207\u308a\u3042\u308a\u3068\u3057\u3066\u3044\u308b\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"enlighter\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">data = pd.DataFrame({\"\u60a3\u8005\u756a\u53f7\":[1,2,3,4,5,6,7,8,9,10], \"\u6297\u304c\u3093\u5264\":[\"A\",\"A\",\"A\",\"A\",\"A\",\"B\",\"B\",\"B\",\"B\",\"B\"], \"\u751f\u5b58\u671f\u9593\":[20,30,40,50,60,55,75,105,115,120], \"\u6253\u3061\u5207\u308a\":[1,1,1,1,0,1,1,1,1,0], \"\u5168\u8eab\u72b6\u614b\":[2,3,2,3,2,0,1,0,0,1]})<\/pre>\n\n\n\n<p>data \u306e\u5185\u5bb9\u3092\u78ba\u8a8d\u3059\u308b\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"enlighter\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">data<\/pre>\n\n\n\n<p>data \u304b\u3089 A \u7fa4\u3001B \u7fa4\u3092\u305d\u308c\u305e\u308c\u62bd\u51fa\u3057\u3001Kaplan-Meier \u30e2\u30c7\u30eb\u306b\u9069\u5408\u3055\u305b\u308b\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"enlighter\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#A \u7fa4\nA = data.query('\u6297\u304c\u3093\u5264 == \"A\"')\nkmf_A = KaplanMeierFitter()\nkmf_A.fit(A.\u751f\u5b58\u671f\u9593, A.\u6253\u3061\u5207\u308a)\n\n#B \u7fa4\nB = data.query('\u6297\u304c\u3093\u5264 == \"B\"')\nkmf_B = KaplanMeierFitter()\nkmf_B.fit(B.\u751f\u5b58\u671f\u9593, B.\u6253\u3061\u5207\u308a)<\/pre>\n\n\n\n<p>Kaplan-Meier \u6cd5\u306b\u3088\u308a\u3001\u6297\u304c\u3093\u5264 A \u7fa4\u3068\u6297\u304c\u3093\u5264 B \u7fa4\u3092\u6bd4\u8f03\u3059\u308b\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"enlighter\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#\u751f\u5b58\u671f\u9593\u4e2d\u592e\u5024\nkmf_A.median_survival_time_\nkmf_B.median_survival_time_\n\n#\u751f\u5b58\u78ba\u7387\u3001\u4fe1\u983c\u533a\u9593\nkmf_A.confidence_interval_survival_function_\nkmf_B.confidence_interval_survival_function_\n\n#5\u5e74 (60\u30ab\u6708) \u751f\u5b58\u7387\nkmf_A.predict(60)\nkmf_B.predict(60)\n\n#Kaplan-Meier \u66f2\u7dda\u306e\u56f3\u793a\nkmf_A.plot() and kmf_B.plot()<\/pre>\n\n\n\n<p>\u30ed\u30b0\u30e9\u30f3\u30af\u691c\u5b9a\u3092\u884c\u3046\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"enlighter\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">result = logrank_test(A.\u751f\u5b58\u671f\u9593, B.\u751f\u5b58\u671f\u9593, A.\u6253\u3061\u5207\u308a, B.\u6253\u3061\u5207\u308a)\nresult.print_summary()<\/pre>\n\n\n\n<p>p \u5024\u3092\u3082\u3063\u3068\u6b63\u78ba\u306b\u77e5\u308a\u305f\u3044\u5834\u5408\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3059\u308b\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"enlighter\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">result.p_value<\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>\u6b21\u306b\u3001Cox \u6bd4\u4f8b\u30cf\u30b6\u30fc\u30c9\u30e2\u30c7\u30eb\u5206\u6790\u3092\u884c\u3046\u3002<a href=\"https:\/\/lifelines.readthedocs.io\/en\/latest\/Quickstart.html\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" title=\"lifelines\">lifelines<\/a> \u3067 Cox \u6bd4\u4f8b\u30cf\u30b6\u30fc\u30c9\u30e2\u30c7\u30eb\u5206\u6790\u3092\u884c\u3046\u5834\u5408\u3001data \u306b &#8220;A&#8221;\u3001&#8221;B&#8221; \u306a\u3069\u306e\u6587\u5b57\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u3068\u3046\u307e\u304f\u89e3\u6790\u3067\u304d\u306a\u3044\u3002\u307e\u305f\u3001\u5909\u91cf\u540d\u306b &#8220;\u751f\u5b58\u671f\u9593&#8221; \u306a\u3069\u306e\u65e5\u672c\u8a9e\uff082\u30d0\u30a4\u30c8\u6587\u5b57\uff09\u3092\u4f7f\u3046\u3068\u30b0\u30e9\u30d5\u306e\u30e9\u30d9\u30eb\u306b\u8868\u793a\u3055\u308c\u306a\u3044\u3002<\/p>\n\n\n\n<p>\u4ee5\u4e0a\u3092\u8e0f\u307e\u3048\u3001\u3042\u3089\u305f\u3081\u3066\u4ee5\u4e0b\u306e\u7c21\u5358\u306a\u30c7\u30fc\u30bf\u30d5\u30ec\u30fc\u30e0\u3092\u4f7f\u3046\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"enlighter\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">data_cox = pd.DataFrame({\"Group\":[0,0,0,0,0,1,1,1,1,1], \"Duration\":[20,30,40,50,60,55,75,105,115,120], \"Censor\":[1,1,1,1,0,1,1,1,1,0], \"PS\":[2,3,2,3,2,0,1,0,0,1]})<\/pre>\n\n\n\n<p>data_cox \u306e\u5185\u5bb9\u3092\u78ba\u8a8d\u3059\u308b\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"enlighter\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">data_cox<\/pre>\n\n\n\n<p>Cox \u6bd4\u4f8b\u30cf\u30b6\u30fc\u30c9\u30e2\u30c7\u30eb\u5206\u6790\u3092\u884c\u3046\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"enlighter\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">cph = CoxPHFitter()\ncph.fit(data_cox, \"Duration\", \"Censor\")\ncph.print_summary()<\/pre>\n\n\n\n<p>\u5404\u5909\u91cf\u306e\u4fe1\u983c\u533a\u9593\u3092\u30b0\u30e9\u30d5\u306b\u63cf\u51fa\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u308b\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"enlighter\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">cph.plot()<\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Python \u306b\u3088\u308b\u751f\u5b58\u6642\u9593\u89e3\u6790<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[18,19,36],"class_list":["post-960","post","type-post","status-publish","format-standard","hentry","category-data-science","tag-multivariate","tag-model","tag-python"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/obgyn.jp\/index.php?rest_route=\/wp\/v2\/posts\/960","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/obgyn.jp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/obgyn.jp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/obgyn.jp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/obgyn.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=960"}],"version-history":[{"count":16,"href":"https:\/\/obgyn.jp\/index.php?rest_route=\/wp\/v2\/posts\/960\/revisions"}],"predecessor-version":[{"id":1093,"href":"https:\/\/obgyn.jp\/index.php?rest_route=\/wp\/v2\/posts\/960\/revisions\/1093"}],"wp:attachment":[{"href":"https:\/\/obgyn.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=960"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/obgyn.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=960"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/obgyn.jp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=960"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}