使用patsy,statsmodels将简单回归转换为对数标度

问题描述 投票:0回答:1

我去时正在关注在线计量经济学课程并学习统计模型。

我从教练那里知道,这种回归将更适合对数刻度,但我不知道如何或在何处转换我的数据/公式。

我正在使用Python,Pandas,Statsmodels和Patsy

这里是我将数据转换为dmatrices的位置:

    y, X = dmatrices('PRICE ~ QUANTITY', data=df, return_type='dataframe')

这里是我在statsmodels中运行回归的地方:

    mod = sm.OLS(y, X)      # Describe model

    res = mod.fit()         # Fit Model

    print(res.summary())    # Summarize model

我得到一个非常低的r平方,但是该模型可以运行。我只是想弄清楚如何转换为对数刻度。在课程中给出的示例中,他将X和Y轴都转换为对数刻度]

编辑:我使用它来工作:

    df2['Quantity'] = np.log(df['QUANTITY'])
    df2['Price'] = np.log(df['PRICE'])

是否有一种方法可以在一行代码中完成该任务,或者如果我需要对另一个问题中的更多变量执行此操作,甚至可以执行一个循环?

python linear-regression statsmodels logarithm patsy
1个回答
0
投票

一个简单的循环,也可能将名称更改为包括“ log”,可能是

columns = ['QUANTITY', 'PRICE', 'aaa']
for col in columns:
    df2["log-" + col] = np.log(df[col])

也可以在公式内使用np.log,但是在那种情况下statsmodels不会提供更多支持,并且每次运行回归或公式时都会计算日志,而不是为的相关列计算一次数据框。

© www.soinside.com 2019 - 2024. All rights reserved.