Python 用于生成和输出多个线性区域的循环
我想建立多个模型。我在寻找一种方法,通过我的列表循环,为每个模型制作并打印摘要Python 用于生成和输出多个线性区域的循环,python,python-3.x,data-science,statsmodels,Python,Python 3.x,Data Science,Statsmodels,我想建立多个模型。我在寻找一种方法,通过我的列表循环,为每个模型制作并打印摘要 x = data[["Prod Order Quantity", "Print Type Complexity " ]] y1 = data["Per Unit Downtime and setup"] y2 = data["Per Unit Runtime"] y3 = data["Setup and downtime&quo
x = data[["Prod Order Quantity", "Print Type Complexity " ]]
y1 = data["Per Unit Downtime and setup"]
y2 = data["Per Unit Runtime"]
y3 = data["Setup and downtime"]
y4 = data["Total Runtime"]
y5 = data["Total Variable Cost over Runtime"]
#add constant list
Xc = sm.add_constant(x)
#make linear regression for 1 outcome variable at a time
model = sm.OLS(y1, Xc)
results = model.fit()
print(results.summary())
#loop to do it for each variable in my list
all_outcomes = [y1,y2,y3,y4,y5]
def all_models(variable_list):
for v in all_outcomes:
model = sm.OLS[v,Xc]
results = model.fit
print(results.summary())
all_models(all_outcomes)
错误
TypeError:“type”对象不可下标
您需要sm.OLS(v,Xc)
,最好使用定义的变量。下面类似的方法会起作用,我首先建立了一个类似于您的示例数据:
import numpy as np
import pandas as pd
import statsmodels.api as sm
data = pd.DataFrame(np.random.normal(0,1,(100,7)))
data.columns = ["Prod Order Quantity", "Print Type Complexity","Per Unit Downtime and setup","Per Unit Runtime","Setup and downtime","Total Runtime","Total Variable Cost over Runtime"]
定义一个函数,在这种情况下,它返回一个结果列表:
def all_models(variable_list,df):
#store results
allresults = []
for v in variable_list:
Xc = sm.add_constant(df[["Prod Order Quantity", "Print Type Complexity"]])
model = sm.OLS(df[v],Xc)
results = model.fit()
print(results.summary())
allresults.append(results)
return allresults
运行它:
all_outcomes = ["Per Unit Downtime and setup","Per Unit Runtime","Setup and downtime","Total Runtime","Total Variable Cost over Runtime"]
res = all_models(all_outcomes,data)