care_prevention_c_analysis.py|2026-03-24 作成
介護予防事業C型(短期集中予防サービス)の参加者データに対し、基本チェックリスト(KCL)得点を用いたセグメント回帰を行い、身体機能改善が期待できる群と期待できない群の境界点(breakpoint)を自動的に同定します。
学会発表でそのまま使えるSVG形式の図7点・表3点・テキストレポート1点を一括出力します。
コマンドプロンプト(またはターミナル)で以下を実行:
py -m pip install piecewise-regression japanize-matplotlib scipy pandas numpy matplotlib
※ py はWindows環境のPythonランチャーです。Mac/Linuxの場合は python3 に読み替えてください。
| 列名 | 型 | 説明 | 必須 |
|---|---|---|---|
id | 文字列 | 参加者ID(匿名化済み, 例: P001) | 必須 |
age | 整数 | 年齢 | 必須 |
sex | 整数 | 性別(0=男性, 1=女性) | 必須 |
kcl_total | 整数 | 基本チェックリスト総合得点(0-25) | 必須 |
kcl_motor | 整数 | KCL 運動器領域(0-5, 質問6-10) | 推奨 |
kcl_nutrition | 整数 | KCL 栄養領域(0-2, 質問11-12) | 推奨 |
kcl_oral | 整数 | KCL 口腔機能領域(0-3, 質問13-15) | 推奨 |
kcl_isolation | 整数 | KCL 閉じこもり領域(0-2, 質問16-17) | 推奨 |
kcl_cognition | 整数 | KCL 認知機能領域(0-3, 質問18-20) | 推奨 |
kcl_depression | 整数 | KCL うつ領域(0-5, 質問21-25) | 推奨 |
kcl_iadl | 整数 | KCL IADL領域(0-5, 質問1-5) | 推奨 |
tug_pre | 小数 | TUG 初回(秒) | 必須 |
tug_post | 小数 | TUG 終了時(秒) | 必須 |
grip_pre | 小数 | 握力 初回(kg) | 推奨 |
grip_post | 小数 | 握力 終了時(kg) | 推奨 |
walk5m_pre | 小数 | 5m歩行速度 初回(秒) | 推奨 |
walk5m_post | 小数 | 5m歩行速度 終了時(秒) | 推奨 |
cs30_pre | 整数 | CS-30 初回(回) | 推奨 |
cs30_post | 整数 | CS-30 終了時(回) | 推奨 |
sessions | 整数 | 参加回数 | 推奨 |
id, age, sex, kcl_total, tug_pre, tug_post の6列があれば解析可能です。列が多いほど出力される図表が増えます。
# 先頭行はヘッダー(列名) id,age,sex,kcl_total,kcl_motor,tug_pre,tug_post,grip_pre,grip_post,sessions P001,78,1,5,2,12.3,10.1,18.5,19.2,20 P002,82,0,12,4,15.8,14.9,25.3,25.0,18 P003,75,1,3,1,9.5,8.2,20.1,21.8,22 # ... 以下同様
care_prevention_c_analysis.py を開き、以下の行を実データのパスに変更:
# 100行目付近 DATA_PATH = r"C:\Users\kawag\work\analysis\care_prevention_c_data.csv" # ↑ ここをあなたのCSVファイルのパスに変更
# コマンドプロンプトで実行
cd C:\Users\kawag\work
py analysis\care_prevention_c_analysis.py
実行時間: n=100で約10〜20秒程度
analysis\output\ フォルダに全ファイルが出力されます。
「挿入」→「画像」→ SVGファイルを選択。PowerPoint 2019以降はSVGをネイティブサポートしています。拡大してもぼやけません。
SVG非対応環境の場合は、同時出力されるPNG(300dpi)をご使用ください。
SVGは svg.fonttype = 'none' で出力しているため、テキストがそのまま編集可能です。フォント・色・位置を自由に調整できます。
SVGはベクター形式のため、どのサイズに拡大しても画質が劣化しません。A0ポスターにもそのまま使用可能です。
| 指標 | 計算式 | 正の値の意味 |
|---|---|---|
| ΔTUG | tug_pre - tug_post | 秒数減少 = 改善 |
| Δ握力 | grip_post - grip_pre | kg増加 = 改善 |
| Δ5m歩行 | walk5m_pre - walk5m_post | 秒数減少 = 改善 |
| ΔCS-30 | cs30_post - cs30_pre | 回数増加 = 改善 |
全指標で正の値 = 改善に統一されます。ユーザー側での計算は不要です。
| 分類 | KCL総合得点 | 根拠 |
|---|---|---|
| ロバスト | 0-3点 | Satake et al. (2018) 日本老年医学会雑誌 55(3) |
| プレフレイル | 4-7点 | |
| フレイル | 8点以上 |
py -m pip install piecewise-regression
japanize-matplotlib がインストールされていない場合、MS Gothicにフォールバックします。以下を実行:
py -m pip install japanize-matplotlib
CSVの列名が仕様と一致しているか確認してください。Excelで保存した際にBOMが付いたり列名にスペースが入ることがあります。
# CSVの先頭行を確認 id,age,sex,kcl_total,tug_pre,tug_post # ↑ スペースや全角文字が混入していないこと
KCL得点の分布に偏りがある(ほぼ全員が同じ得点帯)場合に発生します。データ数が20件未満の場合もスキップされます。この場合、デフォルト値(10点)で2群比較が行われます。
n=100前後では信頼区間がやや広くなることがあります。これは統計的に正常です。学会発表では「探索的知見」として報告し、今後のサンプルサイズ拡大の必要性に言及してください。
【方法】セグメント回帰(Muggeo, 2003)を用いて、基本チェックリスト(KCL)総合得点と身体機能改善量の関係におけるbreakpoint(変化点)を推定した。Breakpointの存在についてはDavies検定で検証し、95%信頼区間をブートストラップ法で算出した。Breakpointで分割した2群間の比較にはMann-Whitney U検定を使用し、効果量はCohen's dで算出した。解析にはPython 3.14 piecewise-regression 1.5.0を使用した。有意水準はp<0.05とした。
[AI構成] 本ガイドはAIが生成したものです。解析手法の妥当性は統計専門家にご確認ください。