微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Python中保存坡度系数

如何解决在Python中保存坡度系数

我正在使用包含数字变量和虚拟变量的数据集。我想弄清楚如何对虚拟变量x(如果条件为true时,x = 1,否则为0,则对Y(我的因变量)进行回归),但是我想按国籍Z来进行分类,因此我最终我的最终目标是针对每个变量M绘制每个回归系数。我无法弄清楚如何通过国籍对y = b0 + b1x进行回归,因此之后我可以对所有b1进行绘制。是我这样做的尝试:

import numpy as np
import pandas as pd
import scipy as sp
import scipy.stats as stats
import statsmodels.formula.api as smf
import matplotlib . pyplot as plt
import seaborn as sns



df = pd.read_csv('file.csv')
df.head()
df.dtypes
df.columns 


model1 = df.groupby('z').apply(lambda df: smf.ols(formula = 'y ~ C(x)',data = df).fit())
                                              
model1.params  #I get a 'Series' object has no attribute 'params' message  


model1[1]
final_sample.insert(1,'model1',model1)
#I run this code but nothing is plotted. I am not sure how I should 
#save the coefficients from above.
final_sample.plot(x='m',y='model1',style='o')
plt.title('Title')
plt.xlabel('X label')
plt.ylabel('Y label')
plt.show()

解决方法

model1 = df.groupby('z').apply(lambda df: smf.ols(formula = 'y ~ C(x)',data = df).fit())

这行代码创建的是pandas.Series(单列),每组z具有一个模型。这就是为什么您无法使用model1.params访问参数的原因。

相反,尝试使用此方法获取每组z包含模型参数的表:

model_params = df.groupby('z').apply(lambda df: smf.ols(formula = 'y ~ C(x)',data = df).fit().params)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。