ロジスティック回帰分析の独立変数はどんな種類のデータか、また、従属変数はどんな種類のデータか?
ロジスティック回帰分析(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
を使った実装や、交絡因子の調整方法も説明できます。興味ある?