{"id":4651,"date":"2026-08-05T21:29:18","date_gmt":"2026-08-05T12:29:18","guid":{"rendered":"https:\/\/best-biostatistics.com\/toukei-er\/?p=4651"},"modified":"2026-08-05T21:29:20","modified_gmt":"2026-08-05T12:29:20","slug":"survival-analysis-with-3-groups-using-iptw-in-r-a-complete-guide-from-weighted-km-curves-to-cox-regression","status":"publish","type":"post","link":"https:\/\/best-biostatistics.com\/toukei-er\/entry\/survival-analysis-with-3-groups-using-iptw-in-r-a-complete-guide-from-weighted-km-curves-to-cox-regression\/","title":{"rendered":"\u3010R\u8a00\u8a9e\u30113\u7fa4\u4ee5\u4e0a\u306e\u751f\u5b58\u6642\u9593\u30c7\u30fc\u30bf\u3092IPTW\u89e3\u6790\u3059\u308b\u65b9\u6cd5\uff01\u91cd\u307f\u4ed8\u304dKM\u66f2\u7dda\u63cf\u753b\u304b\u3089Cox\u56de\u5e30\uff08HR\u7b97\u51fa\uff09\u307e\u3067\u5b8c\u5168\u653b\u7565"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>\u7814\u7a76\u8005<\/strong>: 3\u7fa4\u4ee5\u4e0a\uff08\u4f8b\uff1a\u300c\u6a19\u6e96\u6cbb\u7642 vs \u6cbb\u7642A vs \u6cbb\u7642B\u300d\uff09\u3042\u308b\u6cbb\u7642\u7fa4\u306e\u751f\u5b58\u6642\u9593\u30c7\u30fc\u30bf\u3067\u4ea4\u7d61\u8abf\u6574\u3092\u884c\u3044\u305f\u3044\u306e\u3067\u3059\u304c\u3001\u50be\u5411\u30b9\u30b3\u30a2\u91cd\u307f\u4ed8\u3051\uff08IPTW\uff09\u306e\u30b3\u30fc\u30c9\u3084\u91cd\u307f\u4ed8\u304d\u30ab\u30d7\u30e9\u30f3\u30de\u30a4\u30e4\u30fc\u66f2\u7dda\u306e\u63cf\u304d\u65b9\u304c\u5206\u304b\u308a\u307e\u305b\u3093\u2026\u2026\u3002<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>\u7d71\u8a08ER<\/strong>: 3\u7fa4\u4ee5\u4e0a\u306e\u591a\u7fa4\uff08Multi-treatment\uff09\u306b\u306a\u3063\u3066\u3082\u8eab\u69cb\u3048\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\uff01<code>WeightIt<\/code> + <code>cobalt<\/code> + <code>survival<\/code> + <code>survminer<\/code> \u3092\u4f7f\u3048\u3070\u30012\u7fa4\u6bd4\u8f03\u3068\u307b\u3068\u3093\u3069\u5909\u308f\u3089\u306a\u3044\u30b7\u30f3\u30d7\u30eb\u306a\u8a18\u8ff0\u3067\u4e00\u822c\u5316\u50be\u5411\u30b9\u30b3\u30a2\u306e\u91cd\u307f\u8a08\u7b97\u304b\u3089KM\u66f2\u7dda\u63cf\u753b\u30fbCox\u56de\u5e30\uff08\u30cf\u30b6\u30fc\u30c9\u6bd4\u7b97\u51fa\uff09\u307e\u3067\u5b8c\u7d50\u3067\u304d\u307e\u3059\u3088\uff01\u3055\u3063\u305d\u304f\u89e3\u8aac\u3057\u307e\u3057\u3087\u3046\uff01<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\u81e8\u5e8a\u7814\u7a76\u3084\u89b3\u5bdf\u7814\u7a76\uff08\u30ea\u30a2\u30eb\u30ef\u30fc\u30eb\u30c9\u30c7\u30fc\u30bf\u89e3\u6790\uff09\u306b\u304a\u3044\u3066\u3001\u6cbb\u7642\u6cd5\u3084\u66dd\u9732\u56e0\u5b50\u304c3\u7fa4\u4ee5\u4e0a\uff08\u4f8b\uff1a\u300c\u6a19\u6e96\u6cbb\u7642 vs \u65b0\u85acA vs \u65b0\u85acB\u300d\u300c\u4f4e\u7528\u91cf vs \u4e2d\u7528\u91cf vs \u9ad8\u7528\u91cf\u300d\u306a\u3069\uff09\u5b58\u5728\u3057\u3001\u4ea4\u7d61\u56e0\u5b50\u3092\u8abf\u6574\u3057\u305f\u4e0a\u3067<strong>\u30ab\u30d7\u30e9\u30f3\u30de\u30a4\u30e4\u30fc\uff08KM\uff09\u751f\u5b58\u66f2\u7dda<\/strong>\u3092\u63cf\u753b\u3057\u305f\u308a<strong>Cox\u6bd4\u4f8b\u30cf\u30b6\u30fc\u30c9\u30e2\u30c7\u30eb<\/strong>\u3067\u30cf\u30b6\u30fc\u30c9\u6bd4\uff08HR\uff09\u3092\u7b97\u51fa\u3057\u305f\u3044\u5834\u9762\u306f\u975e\u5e38\u306b\u591a\u3044\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2\u7fa4\u9593\u306e\u50be\u5411\u30b9\u30b3\u30a2\u9006\u78ba\u7387\u91cd\u307f\u4ed8\u3051\uff08IPTW: Inverse Probability of Treatment Weighting\uff09\u306e\u624b\u9806\u306fWeb\u4e0a\u306b\u591a\u304f\u5b58\u5728\u3059\u308b\u304c\u3001<strong>3\u7fa4\u4ee5\u4e0a\u306e\u591a\u7fa4\uff08Multi-treatment\uff09\u6bd4\u8f03\u306b\u306a\u308b\u3068\u3001\u50be\u5411\u30b9\u30b3\u30a2\u306e\u8a08\u7b97\u3084\u91cd\u307f\u4ed8\u3051\u306e\u30b3\u30fc\u30c9\u3067\u9014\u7aef\u306b\u8a70\u307e\u3063\u3066\u3057\u307e\u3046<\/strong>\u7814\u7a76\u8005\u304c\u5c11\u306a\u304f\u306a\u3044\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u300c\u591a\u9805\u30ed\u30b8\u30b9\u30c6\u30a3\u30c3\u30af\u56de\u5e30\u3067\u4e00\u822c\u5316\u50be\u5411\u30b9\u30b3\u30a2\u3092\u624b\u7b97\u51fa\u3057\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u306e\u304b\uff1f\u300d\u3068\u8eab\u69cb\u3048\u308b\u5fc5\u8981\u306f\u306a\u3044\u3002R\u306e\u5f37\u529b\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u7fa4\u3092\u7d44\u307f\u5408\u308f\u305b\u308c\u3070\u30013\u7fa4\u4ee5\u4e0a\u306e\u751f\u5b58\u6642\u9593\u89e3\u6790\u3067\u3042\u3063\u3066\u3082\u30012\u7fa4\u6bd4\u8f03\u3068\u307b\u3068\u3093\u3069\u5909\u308f\u3089\u306a\u3044\u30b7\u30f3\u30d7\u30eb\u306a\u8a18\u8ff0\u3067\u5b8c\u7d50\u3067\u304d\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u672c\u8a18\u4e8b\u3067\u306f\u3001<code>WeightIt<\/code>\u30fb<code>cobalt<\/code>\u30fb<code>survival<\/code>\u30fb<code>survminer<\/code> \u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u6d3b\u7528\u3057\u30013\u7fa4\u4ee5\u4e0a\u306e\u751f\u5b58\u6642\u9593\u30c7\u30fc\u30bf\u306b\u304a\u3051\u308b\u91cd\u307f\u8a08\u7b97\u30fb\u30d0\u30e9\u30f3\u30b9\u8a55\u4fa1\u30fb\u91cd\u307f\u4ed8\u304dKM\u66f2\u7dda\u63cf\u753b\u30fb\u91cd\u307f\u4ed8\u304dCox\u56de\u5e30\uff08HR\u7b97\u51fa\uff09\u307e\u3067\u3092\u4e00\u6c17\u901a\u8cab\u3067\u89e3\u8aac\u3059\u308b\u3002<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">3\u7fa4\u4ee5\u4e0a\u306b\u304a\u3051\u308b\u50be\u5411\u30b9\u30b3\u30a2\uff08\u4e00\u822c\u5316\u50be\u5411\u30b9\u30b3\u30a2\uff1aGPS\uff09\u3068IPTW\u306e\u57fa\u672c\u30eb\u30fc\u30eb<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">2\u7fa4\u6bd4\u8f03\u306b\u304a\u3051\u308b\u50be\u5411\u30b9\u30b3\u30a2\u306f\u300c\u6cbb\u7642\u7fa4\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u308b\u6761\u4ef6\u4ed8\u304d\u78ba\u7387\uff08\u4e8c\u9805\u30ed\u30b8\u30b9\u30c6\u30a3\u30c3\u30af\u56de\u5e30\uff09\u300d\u3067\u3042\u3063\u305f\u304c\u3001\u6cbb\u7642\u6cd5\u304c3\u7fa4\u4ee5\u4e0a\uff08$K \\ge 3$\uff09\u306b\u5897\u3048\u305f\u5834\u5408\u3001\u4e00\u822c\u5316\u50be\u5411\u30b9\u30b3\u30a2\uff08Generalized Propensity Score: GPS\uff09\u306e\u6982\u5ff5\u304c\u9069\u7528\u3055\u308c\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GPS\u3067\u306f\u3001\u591a\u9805\u30ed\u30b8\u30b9\u30c6\u30a3\u30c3\u30af\u56de\u5e30\u30e2\u30c7\u30eb\uff08Multinomial Logistic Regression\uff09\u306a\u3069\u3092\u7528\u3044\u3066\u3001\u60a3\u8005\u306e\u5171\u5909\u91cf $X$ \u306e\u3082\u3068\u3067\u5404\u6cbb\u7642\u7fa4 $k$ \u3092\u53d7\u3051\u308b\u4e8b\u5f8c\u78ba\u7387 $P(A = k \\mid X)$ \u3092\u7b97\u51fa\u3059\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u305d\u3057\u3066\u3001\u5404\u75c7\u4f8b\u306b\u5bfe\u3057\u3066\u300c\u5b9f\u969b\u306b\u53d7\u3051\u305f\u6cbb\u7642\u7fa4 $k$ \u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u305f\u78ba\u7387\u306e\u9006\u6570\u300d\u3092\u91cd\u307f\uff08ATE\u91cd\u307f: Inverse Probability Weight\uff09\u3068\u3057\u3066\u5272\u308a\u5f53\u3066\u308b\u3002$$w_i = \\frac{1}{P(A = a_i \\mid X_i)}$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6570\u5f0f\u306f\u8907\u96d1\u306b\u898b\u3048\u308b\u304c\u3001R\u306b\u304a\u3044\u3066\u306f\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u88cf\u5074\u3067\u81ea\u52d5\u7684\u306b\u591a\u9805\u30e2\u30c7\u30eb\u3092\u30d5\u30a3\u30c3\u30c6\u30a3\u30f3\u30b0\u3057\u3066\u304f\u308c\u308b\u305f\u3081\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u624b\u52d5\u3067\u78ba\u7387\u8a08\u7b97\u3092\u884c\u3046\u5fc5\u8981\u306f\u306a\u3044\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4f7f\u7528\u3059\u308b\u795e\u30d1\u30c3\u30b1\u30fc\u30b84\u9078\u3068\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306e\u5f79\u5272<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">3\u7fa4\u4ee5\u4e0a\u306e\u751f\u5b58\u6642\u9593IPTW\u89e3\u6790\u3092\u30b9\u30e0\u30fc\u30ba\u306b\u884c\u3046\u305f\u3081\u3001\u4ee5\u4e0b\u306e4\u3064\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u9023\u643a\u3055\u305b\u308b\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>WeightIt<\/code><\/strong>: \u6cbb\u7642\u5909\u6570\u304c3\u7fa4\u4ee5\u4e0a\u306e\u56e0\u5b50\u578b\uff08factor\uff09\u3067\u3042\u3063\u3066\u3082\u3001\u81ea\u52d5\u7684\u306b\u591a\u9805\u30e2\u30c7\u30eb\u3092\u9069\u7528\u3057\u3066\u4e00\u62ec\u3067IPTW\u91cd\u307f\u3092\u8a08\u7b97\u3057\u3066\u304f\u308c\u308b\u4e07\u80fd\u30d1\u30c3\u30b1\u30fc\u30b8\u3002<\/li>\n\n\n\n<li><strong><code>cobalt<\/code><\/strong>: 3\u7fa4\u9593\u306e\u5168\u30da\u30a2\uff08Pairwise\uff09\u306b\u304a\u3051\u308b\u6a19\u6e96\u5316\u5e73\u5747\u5dee\uff08SMD\uff09\u3092\u4e00\u62ec\u8a55\u4fa1\u3059\u308b\u3002<\/li>\n\n\n\n<li><strong><code>survival<\/code><\/strong>: \u91cd\u307f\u4ed8\u304d\u30ab\u30d7\u30e9\u30f3\u30de\u30a4\u30e4\u30fc\u63a8\u5b9a\u91cf\uff08<code>survfit<\/code>\uff09\u304a\u3088\u3073\u91cd\u307f\u4ed8\u304dCox\u6bd4\u4f8b\u30cf\u30b6\u30fc\u30c9\u30e2\u30c7\u30eb\uff08<code>coxph<\/code>\uff09\u3092\u5b9f\u884c\u3059\u308b\u3002<\/li>\n\n\n\n<li><strong><code>survminer<\/code><\/strong>: \u8ad6\u6587\u63b2\u8f09\u30ec\u30d9\u30eb\u306e\u7f8e\u3057\u304f\u6574\u3063\u305f\u591a\u7fa4\u30ab\u30d7\u30e9\u30f3\u30de\u30a4\u30e4\u30fc\u66f2\u7dda\uff08<code>ggsurvplot<\/code>\uff09\u3092\u63cf\u753b\u3059\u308b\u3002<\/li>\n<\/ul>\n\n\n\n<div id=\"biost-2870180369\" class=\"biost- biost-entity-placement\"><p style=\"text-align: center;\"><span style=\"font-size: 20px;\"><strong><a href=\"https:\/\/best-biostatistics.com\/kmhl\">\uff1e\uff1e\u3082\u3046\u7d71\u8a08\u3067\u60a9\u3080\u306e\u306f\u7d42\u308f\u308a\u306b\u3057\u307e\u305b\u3093\u304b\uff1f\u00a0<\/a><\/strong><\/span><\/p>\r\n<a href=\"https:\/\/best-biostatistics.com\/kmhl\"><img class=\"aligncenter wp-image-2794 size-full\" src=\"https:\/\/best-biostatistics.com\/wp\/wp-content\/uploads\/2023\/11\/bn_r_03.png\" alt=\"\" width=\"500\" height=\"327\" \/><\/a>\r\n<p style=\"text-align: center;\"><span style=\"color: #ff0000; font-size: 20px;\"><strong><span class=\"marker2\">\u21911\u4e07\u4eba\u4ee5\u4e0a\u306e\u533b\u7642\u5f93\u4e8b\u8005\u304c\u8cfc\u8aad\u4e2d<\/span><\/strong><\/span><\/p><\/div><h2 class=\"wp-block-heading\">\u3010\u5b9f\u8df5\u30b9\u30c6\u30c3\u30d7\u3011R\u30673\u7fa4\u4ee5\u4e0a\u306e\u751f\u5b58\u6642\u9593\u30c7\u30fc\u30bf\u3092IPTW\u89e3\u6790\u3059\u308b\u5168\u30b3\u30fc\u30c9<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u3053\u304b\u3089\u306f\u3001\u5b9f\u969b\u306bR\u74b0\u5883\u3067\u52d5\u4f5c\u3059\u308b\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u3092\u7528\u3044\u3066\u3001Step 1\u304b\u3089Step 5\u307e\u3067\u9806\u756a\u306b\u89e3\u8aac\u3059\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u307e\u305a\u306f\u5fc5\u8981\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u8aad\u307f\u8fbc\u3093\u3067\u304a\u3053\u3046\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u5fc5\u8981\u306a\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u8aad\u307f\u8fbc\u307f\nlibrary(tidyverse)\nlibrary(WeightIt)\nlibrary(cobalt)\nlibrary(survival)\nlibrary(survminer)\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: \u30b5\u30f3\u30d7\u30eb\u30c7\u30fc\u30bf\uff083\u7fa4\u306e\u751f\u5b58\u6642\u9593\u30c7\u30fc\u30bf\uff09\u306e\u6e96\u5099<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u52d5\u4f5c\u78ba\u8a8d\u7528\u3068\u3057\u3066\u30013\u3064\u306e\u6cbb\u7642\u7fa4\uff08<code>Group_A<\/code>, <code>Group_B<\/code>, <code>Group_C<\/code>\uff09\u3068\u751f\u5b58\u6642\u9593\uff08<code>time<\/code>\uff09\u3001\u30a4\u30d9\u30f3\u30c8\u6709\u7121\uff08<code>status<\/code>\uff09\u3001\u5171\u5909\u91cf\u3092\u542b\u3080\u30b5\u30f3\u30d7\u30eb\u30c7\u30fc\u30bf\u3092\u4f5c\u6210\u3059\u308b\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u30b5\u30f3\u30d7\u30eb\u30c7\u30fc\u30bf\u306e\u4f5c\u6210\uff083\u7fa4\u6bd4\u8f03\uff09\nset.seed(123)\nn &lt;- 400\n\ndf_surv &lt;- tibble(\n  id    = 1:n,\n  # 3\u7fa4\u306e\u6cbb\u7642\u5909\u6570\uff08Factor\u578b\u3067\u5b9a\u7fa9\uff09\n  treat = factor(sample(c(\"Group_A\", \"Group_B\", \"Group_C\"), n, replace = TRUE, prob = c(0.4, 0.3, 0.3))),\n  age   = rnorm(n, mean = 65, sd = 10),\n  sex   = factor(sample(c(\"Male\", \"Female\"), n, replace = TRUE)),\n  bmi   = rnorm(n, mean = 24, sd = 4),\n  sbp   = rnorm(n, mean = 135, sd = 15),\n  # \u8ffd\u8de1\u6642\u9593\u3068\u30a4\u30d9\u30f3\u30c8\uff081: \u767a\u751f, 0: \u6253\u5207\u308a\uff09\n  time   = round(runif(n, min = 1, max = 60), 1),\n  status = sample(c(0, 1), n, replace = TRUE, prob = c(0.6, 0.4))\n)\n\nhead(df_surv)\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: <code>WeightIt<\/code> \u306b\u3088\u308b\u91cd\u307f\u4ed8\u3051\uff08\u4e00\u822c\u5316\u50be\u5411\u30b9\u30b3\u30a2\uff09<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>WeightIt<\/code> \u30d1\u30c3\u30b1\u30fc\u30b8\u306e <code>weightit()<\/code> \u95a2\u6570\u306f\u3001\u76ee\u7684\u5909\u6570\uff08\u6cbb\u7642\u5909\u6570\uff09\u304c3\u7fa4\u4ee5\u4e0a\u306e\u56e0\u5b50\u578b\uff08factor\uff09\u306b\u306a\u3063\u3066\u3044\u308b\u5834\u5408\u3001<strong>\u81ea\u52d5\u7684\u306b\u591a\u9805\u30e2\u30c7\u30eb\uff08<code>method = \"glm\"<\/code>\uff09\u3092\u9078\u629e\u3057\u3066\u5404\u7fa4\u306e\u4e00\u822c\u5316\u50be\u5411\u30b9\u30b3\u30a2\u3068IPTW\u91cd\u307f\u3092\u7b97\u51fa\u3059\u308b\u3002<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># 3\u7fa4\u306b\u5bfe\u3059\u308bIPTW\u91cd\u307f\u306e\u8a08\u7b97\nW_multi &lt;- weightit(\n  treat ~ age + sex + bmi + sbp,\n  data     = df_surv,\n  method   = \"glm\",       # \u591a\u9805\u30ed\u30b8\u30b9\u30c6\u30a3\u30c3\u30af\u56de\u5e30\u304c\u5185\u90e8\u3067\u9069\u7528\u3055\u308c\u308b\n  estimand = \"ATE\"        # ATE\u91cd\u307f\u3092\u6307\u5b9a\n)\n\n# \u91cd\u307f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u78ba\u8a8d\nsummary(W_multi)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">2\u7fa4\u6bd4\u8f03\u306e\u30b3\u30fc\u30c9\u3068\u5168\u304f\u540c\u3058\u69cb\u6587\u30673\u7fa4\u306e\u91cd\u307f\u4ed8\u3051\u304c\u5b8c\u4e86\u3059\u308b\u70b9\u304c\u3001<code>WeightIt<\/code> \u3092\u4f7f\u3046\u6700\u5927\u306e\u30e1\u30ea\u30c3\u30c8\u3067\u3042\u308b\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: 3\u7fa4\u9593\u306e\u5171\u5909\u91cf\u30d0\u30e9\u30f3\u30b9\u8a55\u4fa1\uff08<code>cobalt::bal.tab<\/code>\uff09<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">3\u7fa4\u4ee5\u4e0a\u306e\u89e3\u6790\u3067\u306f\u3001<strong>\u5404\u6cbb\u7642\u7fa4\u306e\u30da\u30a2\u3059\u3079\u3066\uff08Group A vs B\u3001Group A vs C\u3001Group B vs C\uff09\u306b\u304a\u3051\u308b\u6a19\u6e96\u5316\u5e73\u5747\u5dee\uff08Pairwise SMD\uff09<\/strong> \u304c\u30d0\u30e9\u30f3\u30b9\u306e\u8a55\u4fa1\u5bfe\u8c61\u3068\u306a\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>cobalt<\/code> \u30d1\u30c3\u30b1\u30fc\u30b8\u306e <code>bal.tab()<\/code> \u3092\u4f7f\u7528\u3059\u308c\u3070\u3001\u5168\u30da\u30a2\u306e\u6700\u5927SMD\uff08Max SMD\uff09\u3084\u7d71\u5408\u7d50\u679c\u3092\u4e00\u62ec\u3067\u78ba\u8a8d\u3067\u304d\u308b\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># 3\u7fa4\u9593\u306e\u5171\u5909\u91cf\u30d0\u30e9\u30f3\u30b9\uff08SMD\uff09\u3092\u4e00\u62ec\u8a55\u4fa1\nbal.tab(W_multi, un = TRUE, stats = c(\"m\"), thresholds = c(m = 0.1))\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u51fa\u529b\u7d50\u679c\u306b\u304a\u3044\u3066\u3001\u91cd\u307f\u4ed8\u3051\u5f8c\uff08<code>Adj<\/code>\uff09\u306e\u6700\u5927SMD\uff08<code>Max.Diff.Adj<\/code>\uff09\u304c\u3059\u3079\u3066 <strong>0.1 \u672a\u6e80<\/strong> \u306b\u53ce\u307e\u3063\u3066\u3044\u308c\u3070\u30013\u7fa4\u9593\u3067\u306e\u5171\u5909\u91cf\u30d0\u30e9\u30f3\u30b9\u8abf\u6574\u306f\u6210\u529f\u3067\u3042\u308b\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: \u91cd\u307f\u4ed8\u304d\u30ab\u30d7\u30e9\u30f3\u30de\u30a4\u30e4\u30fc\uff08KM\uff09\u66f2\u7dda\u306e\u63cf\u753b\uff08<code>survminer<\/code>\uff09<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u91cd\u307f\u4ed8\u3051\u8abf\u6574\u5f8c\u306e\u751f\u5b58\u78ba\u7387\u3092\u63a8\u5b9a\u3057\u3001\u30ab\u30d7\u30e9\u30f3\u30de\u30a4\u30e4\u30fc\u66f2\u7dda\u3092\u63cf\u753b\u3059\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>survival::survfit()<\/code> \u306e <code>weights<\/code> \u5f15\u6570\u306b\u7b97\u51fa\u3055\u308c\u305f\u91cd\u307f\uff08<code>W_multi$weights<\/code>\uff09\u3092\u6e21\u3059\u3053\u3068\u3067\u3001\u7c21\u5358\u306b\u91cd\u307f\u4ed8\u304dKM\u63a8\u5b9a\u91cf\u3092\u7b97\u51fa\u3067\u304d\u308b\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u91cd\u307f\u4ed8\u304d\u30ab\u30d7\u30e9\u30f3\u30de\u30a4\u30e4\u30fc\u66f2\u7dda\u306e\u63a8\u5b9a\nfit_km &lt;- survfit(\n  Surv(time, status) ~ treat,\n  data    = df_surv,\n  weights = W_multi$weights\n)\n\n# survminer \u306b\u3088\u308b\u591a\u7fa4KM\u66f2\u7dda\u306e\u63cf\u753b\nggsurvplot(\n  fit_km,\n  data           = df_surv,\n  pval           = TRUE,             # \u30ed\u30b0\u30e9\u30f3\u30af\u691c\u5b9aP\u5024\u306e\u8868\u793a\n  risk.table     = TRUE,             # Risk Table\u306e\u8868\u793a\n  legend.title   = \"Treatment\",\n  legend.labs    = c(\"Group A\", \"Group B\", \"Group C\"),\n  palette        = c(\"#E41A1C\", \"#377EB8\", \"#4DAF4A\"), # \u30ab\u30e9\u30fc\u30d1\u30ec\u30c3\u30c8\n  title          = \"Weighted Kaplan-Meier Survival Curves (3 Groups)\",\n  xlab           = \"Time (Months)\",\n  ylab           = \"Overall Survival Probability\"\n)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8abf\u6574\u524d\u306e\u80cc\u666f\u30d0\u30a4\u30a2\u30b9\u304c\u53d6\u308a\u9664\u304b\u308c\u305f\u3001\u7f8e\u3057\u304f\u4fe1\u983c\u6027\u306e\u9ad8\u30443\u7fa4\u6bd4\u8f03\u306e\u751f\u5b58\u66f2\u7dda\u304c\u51fa\u529b\u3055\u308c\u308b\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"800\" height=\"600\" src=\"https:\/\/best-biostatistics.com\/toukei-er\/wp-content\/uploads\/2026\/08\/image.png\" alt=\"\" class=\"wp-image-4653\" srcset=\"https:\/\/best-biostatistics.com\/toukei-er\/wp-content\/uploads\/2026\/08\/image.png 800w, https:\/\/best-biostatistics.com\/toukei-er\/wp-content\/uploads\/2026\/08\/image-300x225.png 300w, https:\/\/best-biostatistics.com\/toukei-er\/wp-content\/uploads\/2026\/08\/image-768x576.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5: \u91cd\u307f\u4ed8\u304dCox\u6bd4\u4f8b\u30cf\u30b6\u30fc\u30c9\u30e2\u30c7\u30eb\u306b\u3088\u308b\u30cf\u30b6\u30fc\u30c9\u6bd4\uff08HR\uff09\u7b97\u51fa<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5404\u6cbb\u7642\u7fa4\u9593\u306e\u30cf\u30b6\u30fc\u30c9\u6bd4\uff08HR\uff09\u304a\u3088\u307395%\u4fe1\u983c\u533a\u9593\u3092\u7b97\u51fa\u3059\u308b\u305f\u3081\u3001\u91cd\u307f\u4ed8\u304dCox\u6bd4\u4f8b\u30cf\u30b6\u30fc\u30c9\u30e2\u30c7\u30eb\u3092\u5b9f\u884c\u3059\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">IPTW\u3092\u9069\u7528\u3057\u305f\u7591\u4f3c\u96c6\u56e3\u306b\u304a\u3051\u308b\u56de\u5e30\u5206\u6790\u3067\u306f\u3001\u6a19\u6e96\u8aa4\u5dee\u304c\u904e\u5c0f\u8a55\u4fa1\u3055\u308c\u308b\u306e\u3092\u9632\u3050\u305f\u3081\u3001<strong>\u5805\u7262\u306a\u6a19\u6e96\u8aa4\u5dee\uff08Robust Standard Error \/ Sandwich Estimator\uff09<\/strong> \u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002<code>coxph()<\/code> \u5185\u3067 <code>robust = TRUE<\/code> \u307e\u305f\u306f <code>cluster = id<\/code> \u3092\u6307\u5b9a\u3059\u308b\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u91cd\u307f\u4ed8\u304dCox\u6bd4\u4f8b\u30cf\u30b6\u30fc\u30c9\u30e2\u30c7\u30eb\u306e\u5b9f\u884c\nfit_cox &lt;- coxph(\n  Surv(time, status) ~ treat,\n  data    = df_surv,\n  weights = W_multi$weights,\n  robust  = TRUE             # \u5805\u7262\u306a\u6a19\u6e96\u8aa4\u5dee\u3092\u7b97\u51fa\n)\n\n# \u89e3\u6790\u7d50\u679c\uff08\u30cf\u30b6\u30fc\u30c9\u6bd4\u306895%CI\uff09\u306e\u8868\u793a\nsummary(fit_cox)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u51fa\u529b\u7d50\u679c\u306e\u89e3\u91c8<\/strong>:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u57fa\u6e96\u7fa4\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8\u9806\u306e\u7b2c1\u6c34\u6e96 <code>Group_A<\/code>\uff09\u306b\u5bfe\u3059\u308b <code>Group_B<\/code> \u304a\u3088\u3073 <code>Group_C<\/code> \u306e\u30cf\u30b6\u30fc\u30c9\u6bd4\uff08<code>exp(coef)<\/code>\uff09\u3068\u305d\u306e95%\u4fe1\u983c\u533a\u9593\u30fbP\u5024\u304c\u51fa\u529b\u3055\u308c\u308b\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3\u7fa4\u4ee5\u4e0a\u306eIPTW\u89e3\u6790\u3067\u6c17\u3092\u3064\u3051\u305f\u3044\u6ce8\u610f\u70b9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. \u6975\u7aef\u306a\u91cd\u307f\uff08Extreme Weights\uff09\u3078\u306e\u5bfe\u51e6<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7fa4\u6570\u304c3\u7fa4\u30014\u7fa4\u3068\u5897\u3048\u308b\u306b\u3064\u308c\u3001\u4e00\u822c\u5316\u50be\u5411\u30b9\u30b3\u30a2\u306e\u63a8\u5b9a\u5024\u304c0\u306b\u6975\u3081\u3066\u8fd1\u3044\u75c7\u4f8b\u304c\u767a\u751f\u3057\u3084\u3059\u304f\u306a\u308a\u3001<strong>\u6975\u7aef\u306b\u5927\u304d\u306a\u91cd\u307f\uff08Extreme Weights\uff09<\/strong> \u304c\u751f\u3058\u308b\u30ea\u30b9\u30af\u304c\u9ad8\u307e\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3082\u3057\u7279\u5b9a\u75c7\u4f8b\u306e\u91cd\u307f\u304c\u7a81\u51fa\u3057\u3066\u5927\u304d\u3044\u5834\u5408\u306f\u3001<code>WeightIt<\/code> \u5185\u306e\u30c8\u30ea\u30df\u30f3\u30b0\u6a5f\u80fd\uff08\u4f8b: <code>trim(W_multi, at = 0.99)<\/code>\uff09\u3084\u3001\u5b89\u5b9a\u5316\u91cd\u307f\uff08Stabilized Weights\uff09\u306e\u691c\u8a0e\u3092\u884c\u3046\u3053\u3068\u304c\u63a8\u5968\u3055\u308c\u308b\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. \u30cf\u30b6\u30fc\u30c9\u6bd4\u306e\u57fa\u6e96\u7fa4\uff08Reference\uff09\u306e\u6307\u5b9a<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">3\u7fa4\u6bd4\u8f03\u3067\u306f\u300c\u3069\u306e\u6cbb\u7642\u7fa4\u3092\u5bfe\u7167\uff08\u57fa\u6e96\uff09\u3068\u3057\u3066\u30cf\u30b6\u30fc\u30c9\u6bd4\u3092\u7b97\u51fa\u3059\u308b\u304b\u300d\u3092\u3042\u3089\u304b\u3058\u3081\u6c7a\u5b9a\u3057\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u610f\u56f3\u3057\u305f\u7fa4\uff08\u4f8b: \u6a19\u6e96\u6cbb\u7642\u7fa4\uff09\u3092\u57fa\u6e96\u306b\u8a2d\u5b9a\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u89e3\u6790\u524d\u306b <code>forcats::fct_relevel()<\/code> \u3084 <code>relevel()<\/code> \u3092\u4f7f\u3063\u3066\u56e0\u5b50\u6c34\u6e96\uff08Factor Levels\uff09\u306e\u7b2c1\u6c34\u6e96\u306b\u6307\u5b9a\u3057\u3066\u304a\u3053\u3046\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Group_A \u3092\u57fa\u6e96\u7fa4\uff08Reference\uff09\u306b\u660e\u793a\u7684\u306b\u8a2d\u5b9a\ndf_surv &lt;- df_surv %&gt;% \n  mutate(treat = fct_relevel(treat, \"Group_A\"))\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u3010\u307e\u3068\u3081\u3011\u30b3\u30d4\u30da\u3067\u52d5\u304f\u4e00\u62ec\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30b3\u30fc\u30c9<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u5f8c\u306b\u3001\u672c\u8a18\u4e8b\u3067\u7d39\u4ecb\u3057\u305f\u300c3\u7fa4\u4ee5\u4e0a\u306e\u751f\u5b58\u6642\u9593\u30c7\u30fc\u30bf\u306b\u5bfe\u3059\u308bIPTW\u89e3\u6790\u300d\u306e\u4e00\u5f0f\u30b3\u30fc\u30c9\u3092\u307e\u3068\u3081\u305f\u3002\u81ea\u8eab\u306e\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u540d\u30fb\u5909\u6570\u540d\u306b\u66f8\u304d\u63db\u3048\u3066\u30b3\u30d4\u30fc\uff06\u30da\u30fc\u30b9\u30c8\u3067\u6d3b\u7528\u3057\u3066\u307b\u3057\u3044\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># === 3\u7fa4\u4ee5\u4e0a\u306e\u751f\u5b58\u6642\u9593\u30c7\u30fc\u30bf IPTW\u89e3\u6790 \u4e00\u62ec\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 ===\nlibrary(tidyverse)\nlibrary(WeightIt)\nlibrary(cobalt)\nlibrary(survival)\nlibrary(survminer)\n\n# 1. \u57fa\u6e96\u7fa4\u306e\u6574\u7406\uff08\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u57fa\u6e96\u7fa4\u3092\u7b2c1\u6c34\u6e96\u306b\u8a2d\u5b9a\uff09\ndf &lt;- df_surv %&gt;% \n  mutate(treat = fct_relevel(treat, \"Group_A\"))\n\n# 2. IPTW\u91cd\u307f\uff08\u4e00\u822c\u5316\u50be\u5411\u30b9\u30b3\u30a2\uff09\u306e\u8a08\u7b97\nW &lt;- weightit(\n  treat ~ age + sex + bmi + sbp, # \u6cbb\u7642\u5909\u6570 ~ \u5171\u5909\u91cf\n  data     = df,\n  method   = \"glm\",\n  estimand = \"ATE\"\n)\n\n# 3. 3\u7fa4\u9593\u306e\u5171\u5909\u91cf\u30d0\u30e9\u30f3\u30b9\u8a55\u4fa1\uff08SMD &lt; 0.1 \u306e\u78ba\u8a8d\uff09\nbal.tab(W, un = TRUE, thresholds = c(m = 0.1))\n\n# 4. \u91cd\u307f\u4ed8\u304d\u30ab\u30d7\u30e9\u30f3\u30de\u30a4\u30e4\u30fc\u66f2\u7dda\u306e\u63a8\u5b9a\u3068\u63cf\u753b\nfit_km &lt;- survfit(Surv(time, status) ~ treat, data = df, weights = W$weights)\nggsurvplot(fit_km, data = df, pval = TRUE, risk.table = TRUE)\n\n# 5. \u91cd\u307f\u4ed8\u304dCox\u56de\u5e30\uff08\u30cf\u30b6\u30fc\u30c9\u6bd4\u306e\u7b97\u51fa\uff09\nfit_cox &lt;- coxph(Surv(time, status) ~ treat, data = df, weights = W$weights, robust = TRUE)\nsummary(fit_cox)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u96e3\u89e3\u306b\u898b\u3048\u308b\u591a\u7fa4\u306e\u751f\u5b58\u6642\u9593\u56e0\u679c\u63a8\u8ad6\u3082\u3001<code>WeightIt<\/code> \uff0b <code>survival<\/code> \uff0b <code>survminer<\/code> \u306e\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3092\u4f7f\u3048\u3070\u975e\u5e38\u306b\u30b9\u30de\u30fc\u30c8\u306b\u51e6\u7406\u3067\u304d\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u9069\u5207\u306a\u4ea4\u7d61\u8abf\u6574\u3092\u884c\u3044\u3001\u8aac\u5f97\u529b\u306e\u9ad8\u3044\u81e8\u5e8a\u7814\u7a76\u7d50\u679c\u3092\u767a\u8868\u3057\u3066\u3044\u3053\u3046\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u304a\u3059\u3059\u3081\u66f8\u7c4d<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/amzn.to\/4fIOdlq\">\u8ab0\u3082\u6559\u3048\u3066\u304f\u308c\u306a\u304b\u3063\u305f\u3000\u533b\u7642\u7d71\u8a08\u306e\u4f7f\u3044\u5206\u3051\u301c\u8ff7\u3044\u3084\u3059\u3044\u89e3\u6790\u624b\u6cd5\u306e\u9078\u3073\u65b9\u304c\uff0cR\u3067\u5b9f\u611f\u3057\u306a\u304c\u3089\u308f\u304b\u308b\uff01<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u7814\u7a76\u8005: 3\u7fa4\u4ee5\u4e0a\uff08\u4f8b\uff1a\u300c\u6a19\u6e96\u6cbb\u7642 vs \u6cbb\u7642A vs \u6cbb\u7642B\u300d\uff09\u3042\u308b\u6cbb\u7642\u7fa4\u306e\u751f\u5b58\u6642\u9593\u30c7\u30fc\u30bf\u3067\u4ea4\u7d61\u8abf\u6574\u3092\u884c\u3044\u305f\u3044\u306e\u3067\u3059\u304c\u3001\u50be\u5411\u30b9\u30b3\u30a2\u91cd\u307f\u4ed8\u3051\uff08IPTW\uff09\u306e\u30b3\u30fc\u30c9\u3084\u91cd\u307f\u4ed8\u304d\u30ab\u30d7\u30e9\u30f3\u30de\u30a4\u30e4\u30fc\u66f2\u7dda\u306e\u63cf\u304d\u65b9\u304c\u5206\u304b\u308a\u307e\u305b\u3093\u2026\u2026\u3002  [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":4654,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"swell_btn_cv_data":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[7],"tags":[],"class_list":["post-4651","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-iptw-"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/best-biostatistics.com\/toukei-er\/wp-content\/uploads\/2026\/08\/\uff13\u7fa4\u4ee5\u4e0aIPTW\u751f\u5b58\u6642\u9593\u5206\u6790-scaled.png","_links":{"self":[{"href":"https:\/\/best-biostatistics.com\/toukei-er\/wp-json\/wp\/v2\/posts\/4651","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/best-biostatistics.com\/toukei-er\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/best-biostatistics.com\/toukei-er\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/best-biostatistics.com\/toukei-er\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/best-biostatistics.com\/toukei-er\/wp-json\/wp\/v2\/comments?post=4651"}],"version-history":[{"count":2,"href":"https:\/\/best-biostatistics.com\/toukei-er\/wp-json\/wp\/v2\/posts\/4651\/revisions"}],"predecessor-version":[{"id":4655,"href":"https:\/\/best-biostatistics.com\/toukei-er\/wp-json\/wp\/v2\/posts\/4651\/revisions\/4655"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/best-biostatistics.com\/toukei-er\/wp-json\/wp\/v2\/media\/4654"}],"wp:attachment":[{"href":"https:\/\/best-biostatistics.com\/toukei-er\/wp-json\/wp\/v2\/media?parent=4651"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/best-biostatistics.com\/toukei-er\/wp-json\/wp\/v2\/categories?post=4651"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/best-biostatistics.com\/toukei-er\/wp-json\/wp\/v2\/tags?post=4651"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}