Преобразование простой регрессии в логарифмическую шкалу c с помощью patsy, statsmodels - PullRequest
0 голосов
/ 22 апреля 2020

Я слежу за онлайн-курсом по эконометрике и изучаю модели статистики, пока я go.

Я знаю от преподавателя, что эта регрессия будет лучше соответствовать логарифмической шкале c, но я не знаю, как и где преобразовать мои данные / формулу.

I Я использую 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 строке кода, или даже все oop, если мне нужно было сделать это еще с несколькими переменными в другой задаче?

1 Ответ

0 голосов
/ 22 апреля 2020

простой l oop, также меняющий имя на «log», может быть

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

Также возможно использовать np.log внутри формулы, но statsmodels не предоставляет больше поддержка в этом случае, и он будет вычислять журнал каждый раз, когда выполняется регрессия или формула, а не вычислять его один раз для соответствующих столбцов кадра данных.

...