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