我有一个像这样的数据库。种族、年龄和保险变量是分类变量,症状和新冠病毒位置变量是[0/1]
ID RACE_GROUP_N Age_Group_N... Covid_pos Asymptomatic Fever Cough ...
0 1 0 1 0 1 0
1 0 2 0 0 0 1
2 3 3 1 1 0 0
3 2 1 1 0 1 0
4 3 2 0 1 0 0
5 0 4 1 0 1 0
我想为每个症状变量运行单独的回归模型,包括分类变量、年龄、种族和保险。对于每个症状,每次回归都是相同的;例如,目前的回归模型如下所示:
asy_model = smf.logit("Covid_pos ~ Asymptomatic + C(RACE_GROUP_N, Treatment(0))+ C(Age_Group_N, Treatment(0))+C(Insurance_Type_Group, Treatment(0))",
data = df_merged2).fit()
asy_model_odds = pd.DataFrame(np.exp(asy_model.params), columns= ['OR'])
asy_model_odds['z-value']= asy_model.pvalues
asy_model_odds[['2.5%', '97.5%']] = np.exp(asy_model.conf_int())
asy_model_odds
fev_model = smf.logit("Covid_pos ~ Fever+ C(RACE_GROUP_N, Treatment(0))+ C(Age_Group_N, Treatment(0))+C(Insurance_Type_Group, Treatment(0))",
data = df_merged2).fit()
fev_model_odds = pd.DataFrame(np.exp(fev_model .params), columns= ['OR'])
fev_model_odds ['z-value']= fev_model .pvalues
fev_model_odds [['2.5%', '97.5%']] = np.exp(fev_model .conf_int())
fev_model_odds
问题陈述1:我想创建一个for循环,这样就不必为每个症状变量编写15次以上的代码
问题陈述2:我希望for循环的输出用OR和95%CI表示结果
Symptom Odds Ratio LCB UCB
Asymptomatic 2.607 1.981 3.430
Fever 1.899 1.226 2.941
不确定为什么要分离症状并运行单独的回归(因为logit回归的目的正是为了确定所有特征/症状的重要性)
无论如何,你们可以建立一个字典,名字和型号如下
那么这个循环就是
最后,您可以像使用任何字典一样访问每个单独赔率的赔率,也可以构建主数据帧
更新
我不记得statsmodels的语法,但要填充
all_models
字典,可以使用以下命令相关问题 更多 >
编程相关推荐