sm.OLS.from_formula('variable1 ~ variable2 + x ') 与 statsmodels 的问题

Issue with sm.OLS.from_formula('variable1 ~ variable2 + x ') with statsmodels

如果我 运行 函数 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
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)

使用 python 的字符串格式,我发现以下是不需要 exog_names 和更多 for 循环的最佳解决方案。

model = sm.OLS.from_formula('{} ~ {} + age + sex + height'.format(dependent, independent), file)