首页 > 解决方案 > 带有 statsmodels 的 sm.OLS.from_formula('variable1 ~ variable2 + x ') 问题

问题描述

如果我运行该函数advanced_stats(['one', 'two', 'three'], 'myFile.csv')[0].summary(),或者advanced_stats(['one', 'two', 'three'], 'myFile.csv')[0].pvalues下面的函数将输出file[independent]file[dependent]而不是实际名称'one', 'two' or 'three' ,我需要在输出值时知道列名。计算和代码完美运行,但标签很重要,因为我将它们用作我的数据框的一部分。所以,我需要知道如何输出标题 'one' 而不是file[dependent].

def advanced_stats(categories, file):

    finalData = []
    for dependent in categories:
        for independent in categories:
            if dependent == independent:
                pass
            else:
                model = sm.OLS.from_formula('file[dependent] ~ file[independent] + age + sex + height', file).fit()
                finalData.append(model)

    return finalData

标签: python-3.xpandasstatsmodels

解决方案


model = sm.OLS.from_formula('file[dependent] ~ file[independent] + age + sex + height', file)
model.exog_names[:] = [dependent if x=='file[dependent]' else x for x in model.exog_names]
model.exog_names[:] = [independent if x=='file[independent]' else x for x in model.exog_names]
result = model.fit()
finalData.append(result)

推荐阅读