在计算模型的不同置信区间时,我想使用多重处理进行线性回归建模。
在此示例中,我使用来自 https://www.geeksforgeeks.org/linear-regression-in-python-using-statsmodels/.
的数据集。我已经安装了模型。我查看了置信区间
print model.summary()
,默认置信区间是95%。我知道您可以使用 alpha
中的 model.summary(alpha=0.01)
参数将置信区间设置为 99%。
我希望代码的输出是具有不同置信区间的摘要列表。下面代码的问题在于列表中的每个摘要都具有相同的默认 95% 置信区间。显然,通过不同的置信区间是行不通的。但我该如何让它发挥作用呢?
谢谢!
import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
from multiprocessing import Pool
# Data
df = pd.read_csv('C:\\Users\\Me\\Desktop\\headbrain1.csv')
# Model
df.columns = ['Head_size', 'Brain_weight']
model = smf.ols(formula='Head_size ~ Brain_weight', data=df).fit()
# Summaries
if __name__ == "__main__":
pool = Pool()
summaries_list = pool.map(model.summary, [0.05, 0.04 0.01])
print(summaries_list)
问题在于,
model.summary()
中的statsmodels
方法与Pool.map
一起使用时不直接接受alpha参数。为了解决这个问题,您可以使用 lambda 函数或 Python 的 functools.partial
创建一个接受 alpha 值的包装器。
这是使用 lambda 函数修改代码的一种方法:
import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
from multiprocessing import Pool
df = pd.read_csv('C:\\Users\\Me\\Desktop\\headbrain1.csv')
df.columns = ['Head_size', 'Brain_weight']
model = smf.ols(formula='Head_size ~ Brain_weight', data=df).fit()
# Function to get summary with different alpha values
def get_summary(alpha):
return model.summary(alpha=alpha)
# Summaries
if __name__ == "__main__":
pool = Pool()
alphas = [0.05, 0.04, 0.01]
summaries_list = pool.map(get_summary, alphas)
pool.close()
pool.join()
for summary in summaries_list:
print(summary)