Пошаговая регрессия в Python
Как выполнить пошаговую регрессию в python? Есть методы для OLS в SCIPY, но я не могу делать поэтапно. Любая помощь в этом отношении будет большой помощью. Спасибо.
Изменить: Я пытаюсь построить модель линейной регрессии. Я имею 5 независимых переменных и используя пошаговую ступенчатую регрессию, я хочу выбрать переменные, чтобы моя модель имела самое низкое значение p. Следующая ссылка объясняет цель:
https://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&ved=0CEAQFjAD&url=http%3A%2F%2Fbusiness.fullerton.edu%2Fisds%2Fjlawrence%2FStat-On-Line%2FExcel%2520Notes%2FExcel%2520Notes%2520-%2520STEPWISE%2520REGRESSION.doc&ei=YjKsUZzXHoPwrQfGs4GQCg&usg=AFQjCNGDaQ7qRhyBaQCmLeO4OD2RVkUhzw&bvm=bv.47244034,d.bmk
Еще раз спасибо.
Ответы
Ответ 1
Тревор Смит и я написал небольшую функцию выбора прямых для линейной регрессии с помощью statsmodels: http://planspace.org/20150423-forward_selection_with_statsmodels/ Вы можете легко изменить ее, чтобы свести к минимуму значение p или выбрать основанный на бета-значениях p только с немного большей работой.
Ответ 2
Вы можете сделать выбор вперед-назад на основе модели statsmodels.api.OLS
, как показано в этом ответе.
Однако этот ответ описывает, почему вы не должны использовать поэтапный выбор для эконометрических моделей в первую очередь.
Ответ 3
У Statsmodels есть дополнительные методы для регрессии: http://statsmodels.sourceforge.net/devel/examples/generated/example_ols.html. Я думаю, это поможет вам выполнить поэтапную регрессию.
Ответ 4
"""Importing the api class from statsmodels"""
import statsmodels.formula.api as sm
"""X_opt variable has all the columns of independent variables of matrix X
in this case we have 5 independent variables"""
X_opt = X[:,[0,1,2,3,4]]
"""Running the OLS method on X_opt and storing results in regressor_OLS"""
regressor_OLS = sm.OLS(endog = y, exog = X_opt).fit()
regressor_OLS.summary()
Используя итоговый метод, вы можете проверить в своем ядре значения p вашего
переменные, записанные как 'P > | t |'. Затем проверьте переменную с наивысшим значением p
стоимость. Предположим, что x3 имеет наибольшее значение, например 0,9556. Затем удалите этот столбец
из вашего массива и повторите все шаги.
X_opt = X[:,[0,1,3,4]]
regressor_OLS = sm.OLS(endog = y, exog = X_opt).fit()
regressor_OLS.summary()
Повторите эти методы, пока не удалите все столбцы с p-значением, превышающим значение значимости (например, 0,05). В конце ваша переменная X_opt будет иметь все оптимальные переменные с p значениями ниже уровня значимости.
Ответ 5
Вы можете попробовать mlxtend, который получил различные методы выбора.
from mlxtend.feature_selection import SequentialFeatureSelector as sfs
clf = LinearRegression()
# Build step forward feature selection
sfs1 = sfs(clf,k_features = 10,forward=True,floating=False, scoring='r2',cv=5)
# Perform SFFS
sfs1 = sfs1.fit(X_train, y_train)