ロジスティック回帰モデル

ロジスティック回帰分析の独立変数はどんな種類のデータか、また、従属変数はどんな種類のデータか?

ロジスティック回帰分析(logistic regression)は、**従属変数(目的変数)が2値(バイナリ)**のときに使われる回帰モデルです。たとえば「疾患あり(1)/なし(0)」のような分類問題に使います。


✅ ロジスティック回帰の特徴(整理)

  • 従属変数(目的変数):0または1(例:疾患の有無)
  • 独立変数(説明変数):連続変数またはカテゴリ変数(年齢、性別、血圧など)
  • 多変量か?:はい。複数の説明変数を同時に扱えます(=多変量ロジスティック回帰)

🏥 臨床データの具体例(Pythonコードつき)

例:糖尿病の有無(0=なし, 1=あり)を、年齢・BMI・HbA1c・性別から予測する

/*
import pandas as pd
import numpy as np
import statsmodels.api as sm
import seaborn as sns
import matplotlib.pyplot as plt

# ダミーデータの作成(50人分)
np.random.seed(0)
n = 50

df = pd.DataFrame({
    'Age': np.random.randint(30, 80, size=n),                   # 年齢(30〜79)
    'BMI': np.random.normal(25, 4, size=n),                     # BMI(平均25、SD4)
    'HbA1c': np.random.normal(5.8, 0.8, size=n),                # HbA1c(平均5.8%、SD0.8)
    'Sex': np.random.choice([0, 1], size=n),                    # 性別(0=女性, 1=男性)
})

# 糖尿病の有無を確率的に発生させる(従属変数)
log_odds = -5 + 0.05 * df['Age'] + 0.2 * df['BMI'] + 0.8 * df['HbA1c'] + 0.5 * df['Sex']
prob = 1 / (1 + np.exp(-log_odds))
df['Diabetes'] = np.random.binomial(1, prob)

# 説明変数に定数を追加(切片)
X = sm.add_constant(df[['Age', 'BMI', 'HbA1c', 'Sex']])
y = df['Diabetes']

# ロジスティック回帰モデル
model = sm.Logit(y, X)
result = model.fit()

# 結果の表示
print(result.summary())
*/

🔍 結果の読み方(要点)

  • coef列:各説明変数の係数(ログオッズ)
  • P>|z|列:p値(0.05未満で統計的に有意)
  • const:切片(intercept)

💡 応用例

  • 院内死亡の予測(従属変数:死亡=1、生存=0)
  • 手術後感染の予測(独立変数:年齢、術式、糖尿病の有無など)

必要なら scikit-learn を使った実装や、交絡因子の調整方法も説明できます。興味ある?