0

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

我从讲师那里知​​道,这种回归将更适合对数尺度,但我不知道如何或在哪里转换我的数据/公式。

我正在使用 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'])

有没有办法在 1 行代码中完成,如果我需要在另一个问题中对更多变量执行此操作,甚至是循环?

4

1 回答 1

1

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

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

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

于 2020-04-22T18:30:13.177 回答