Скорректированный квадрат R для каждой переменной предиктора в python
У меня есть фрейм данных панд, который содержит несколько столбцов. Мне нужно выполнить многомерную линейную регрессию. Перед этим я хотел бы проанализировать R,R2, скорректированные значения R2 и p для каждой независимой переменной относительно зависимой переменной. Для R и R2 у меня нет проблем, так как я могу вычислить матрицу R и выбрать только зависимую переменную, а затем увидеть коэффициент R между ней и всеми независимыми переменными. Тогда я могу возвести в квадрат эти значения, чтобы получить R2. Моя проблема в том, как сделать то же самое с откорректированным R2 и значением p. В конце я хочу получить следующее:
Variable R R2 ADJUSTED_R2 p_value
A 0.4193 0.1758 ...
B 0.2620 0.0686 ...
C 0.2535 0.0643 ...
Все значения относятся к зависимой переменной, скажем, Y.
1 ответ
Следующее не даст вам ВСЕХ ответов, но поможет вам использовать python, pandas и statsmodels для регрессионного анализа.
Учитывая данные кадра, как это...
# Imports
import pandas as pd
import numpy as np
import itertools
# A datafrane with random numbers
np.random.seed(123)
rows = 12
listVars= ['y','x1', 'x2', 'x3']
rng = pd.date_range('1/1/2017', periods=rows, freq='D')
df_1 = pd.DataFrame(np.random.randint(100,150,size=(rows, len(listVars))), columns=listVars)
df_1 = df_1.set_index(rng)
print(df_1)
... вы можете получить любые результаты регрессии, используя библиотеку statsmodels и изменяя result = model.rsquared
часть во фрагменте ниже:
x = df_1['x1']
x = sm.add_constant(x)
model = sm.OLS(df_1['y'], x).fit()
result = model.rsquared
print(result)
Теперь у вас есть R-квадрат. использование model.pvalues
для р-значения. И использовать dir(model)
чтобы внимательнее взглянуть на другие результаты модели (в выводе больше, чем вы видите ниже):
Теперь это должно заставить вас получить желаемые результаты. Чтобы получить желаемые результаты для ВСЕХ комбинаций переменных / столбцов, вопрос и ответ здесь должны дать вам очень далеко.
Редактировать: Вы можете ближе познакомиться с некоторыми общими результатами регрессии, используя model.summary()
, Используя это вместе с dir(model)
Вы можете видеть, что не ВСЕ результаты регрессии доступны так же, как используются значения pvalues model.pvalues
, Например, чтобы получить Дурбина-Уотсона, вам придется использовать durbinwatson = sm.stats.stattools.durbin_watson(model.fittedvalues, axis=0)
, Этот пост получил больше информации по этому вопросу.