Получение преобразованных значений X из модели OLS с использованием statsmodels - PullRequest
0 голосов
/ 22 марта 2020

Я пытаюсь сделать линейную регрессию. С результатами я хочу умножить каждый x на собственный расчетный коэффициент: x i · β i .

Однако я делаю много преобразований для x i .

Например:

import statsmodels.api as sm
import statsmodels.formula.api as smf
import numpy as np

def log_plus_1(x):
    return np.log(x + 1.0)

df = sm.datasets.get_rdataset("Guerry", "HistData").data
df = df[['Lottery', 'Literacy', 'Wealth', 'Region']].dropna()
formule = 'Lottery ~ pow(Literacy,2) + log_plus_1(Wealth)'
mod = smf.ols(formula=formule, data=df)
res = mod.fit()
res.params

Теперь мне нужно было бы pow(Literacy, 2) и log_plus_1(Wealth). Но так как они go в модель, я надеялся вывести их оттуда тоже. Вместо преобразования данных из исходного набора данных.

В RI будет использоваться res$model для его получения.

1 Ответ

0 голосов
/ 22 марта 2020

Данные хранятся в качестве атрибутов модели, например, матрица проектирования - mod.exog, зависимая или ответная переменная - mod.endog.

(Я не уверен, что правильно помню детали следующего: данные, которые возвращаются после создания преобразованной матрицы дизайна, должны, в этом случае, быть pandas DataFrame и должны храниться в mod.data.orig_exog или что-то в этом роде.)

res.predict автоматически обрабатывает преобразование, т.е. Пэтси использует информацию формулы для преобразования данных для объясняющих переменных в прогнозе так же, как данные были преобразованы при создании модель.
predict возвращает только прогноз, а не внутренне преобразованный прогноз exog.

...