модель регрессии statsmodel python - PullRequest
0 голосов
/ 29 сентября 2018

Это больше вопрос статистики, так как код работает нормально, но я изучаю регрессионное моделирование на python.У меня есть код ниже со statsmodel для создания простой модели линейной регрессии:

import statsmodels.api as sm
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

ng = pd.read_csv('C:/Users/ben/ngDataBaseline.csv',  thousands=',', index_col='Date', parse_dates=True)

X = ng['HDD']
y = ng['Therm']

# Note the difference in argument order
model = sm.OLS(y, X).fit()

# Print out the statistics
model.summary()

Я получаю вывод наподобие скриншота ниже.Я пытаюсь оценить пригодность, и я знаю, что R ^ 2 высока, но возможно ли найти среднеквадратическую ошибку (RMSE) прогноза с помощью statsmodel?

Я также пытаюсьисследовать, могу ли я оценить распределение выборки с доверительным интервалом.Если я правильно интерпретирую таблицу для перехвата HDD 5.9309 со стандартной ошибкой 0.220, значением p, низким 0.000, и я думаю, что с доверительным интервалом 97,5% значение HDD (или это моя зависимая переменная Therm?) Будет между 5.489 и6,373 ??Или я думаю, что в процентах это может быть выражено как ~ + - 0,072%

enter image description here

РЕДАКТИРОВАТЬ включенотаблица множественной регрессии enter image description here

1 Ответ

0 голосов
/ 29 сентября 2018

Можно ли рассчитать RMSE с помощью statsmodels?Да, но сначала вам нужно сгенерировать прогнозы с помощью вашей модели, а затем использовать метод rmse.

from statsmodels.tools.eval_measures import rmse

# fit your model which you have already done

# now generate predictions
ypred = model.predict(X)

# calc rmse
rmse = rmse(y, ypred)

Что касается интерпретации результатов, HDD isn 'т перехват.Это ваша независимая переменная.Коэффициент (например, вес) составляет 5,9309 со стандартной ошибкой 0,220.Значение t для этой переменной действительно высокое, что говорит о том, что она является хорошим предиктором, а поскольку она высокая, значение p очень мало (близко к 0).

Значения 5.489 и 6.373 - это вашидоверительные границы для 95% доверительного интервала.Границы просто рассчитываются на основе сложения или вычитания стандартных времен ошибок t-статистики, связанных с 95% -ным доверительным интервалом, из коэффициента.

t-статистика зависит от размера вашей выборки, который в вашем случае равен 53, поэтому ваши степени свободы равны 52. Используя t-table , это означает, что для df = 52и уровень достоверности 95%, t-статистика составляет 2,0066.Поэтому границы могут быть вычислены вручную следующим образом:

lower: 5.9309 - (2.0066 x 0.220) = 5.498
upper: 5.9309 + (2.0066 x 0.220) = 6.372

Конечно, есть некоторые потери точности из-за округления, но вы можете видеть, что ручной расчет действительно близок к тому, что сообщается в сводке.

Дополнительный ответ на ваши комментарии:

Существует несколько показателей, которые можно использовать для оценки качества подгонки.Одним из них является скорректированная статистика R-квадрата.Другие RMSE, F-статистика или AIC / BIC.Вам решать, какую метрику или метрики использовать для оценки качества подгонки.Для меня я обычно использую скорректированный R-квадрат и / или RMSE, хотя RMSE - это скорее относительный показатель для сравнения с другими моделями.

Теперь, глядя на сводки ваших моделей, обе модели хорошо подходят,особенно первая модель с учетом скорректированного значения R-квадрата.Со второй моделью возможны потенциальные улучшения (могут быть использованы разные комбинации независимых переменных), но вы не узнаете, если не будете экспериментироватьВ конечном счете, нет правильной и неправильной модели.Все сводится к тому, чтобы построить несколько моделей и сравнить их, чтобы получить лучшую.Я также свяжу статью , которая объясняет некоторые достоинства метрик соответствия для регрессионных моделей.

Что касается доверительных интервалов, я свяжу это SO сообщение так как человек, который ответил на вопрос, имеет код для создания доверительного интервала.Вы захотите взглянуть на predict_mean_ci_low и predict_mean_ci_high, которые он создал в своем коде.Эти две переменные дадут вам доверительные интервалы при каждом наблюдении, и оттуда вы можете рассчитать +/- терм / кВт-ч, вычтя более низкий CI из вашего прогноза или вычтя свой прогноз из верхнего CI.

...