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())