示例#1
0
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('提示', '执行完成!')