def run(): varsY = [ x for x in Y.columns.tolist() if Y.columns.tolist().index(x) in listboxY.curselection() ] varsX = [ x for x in X.columns.tolist() if X.columns.tolist().index(x) in listboxX.curselection() ] global trainY global trainX trainY = Y[~data.isnull().T.any().T] trainX = X[~data.isnull().T.any().T] trainX = add_constant(trainX[varsX]) testX = X[data.isnull().T.any().T] testX = add_constant(testX[varsX]) result0 = DataFrame(columns=varsY) if (len(varsY) == 0): messagebox.showinfo('提示', '至少选中一个结果变量!') return if (len(varsX) == 0): messagebox.showinfo('提示', '至少选中一个预测变量!') return with ExcelWriter(saveFile, engine="openpyxl") as writer: for id, varY in enumerate(varsY): fit = OLS(trainY.iloc[:, id], trainX).fit() print(fit.summary2().tables) result0[varY] = fit.predict(testX) result0.to_excel(writer, sheet_name="SUMMARY", header=True, index=True) global result1 result1 = fit.get_prediction(testX).summary_frame() result1.to_excel(writer, sheet_name=varY, header=True, index=True) global result2 result2 = fit.summary2().tables result2[0].iloc[:, [0, 1]].to_excel(writer, sheet_name=varY, header=False, index=False, startrow=result1.shape[0] + 2, startcol=0) result2[0].iloc[:, [2, 3]].to_excel(writer, sheet_name=varY, header=False, index=False, startrow=result1.shape[0] + 2, startcol=5) result2[1].to_excel(writer, sheet_name=varY, header=True, index=True, startrow=result1.shape[0] + result2[0].shape[0] + 3) writer.save() writer.close() messagebox.showinfo('提示', '执行完成!')