Подтвердить что ты не робот

Пошаговая регрессия в 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

Еще раз спасибо.

4b9b3361

Ответ 1

Тревор Смит и я написал небольшую функцию выбора прямых для линейной регрессии с помощью statsmodels: http://planspace.org/20150423-forward_selection_with_statsmodels/ Вы можете легко изменить ее, чтобы свести к минимуму значение p или выбрать основанный на бета-значениях p только с немного большей работой.

Ответ 2

Вы можете сделать выбор вперед-назад на основе модели statsmodels.api.OLS, как показано в этом ответе.

Однако этот ответ описывает, почему вы не должны использовать поэтапный выбор для эконометрических моделей в первую очередь.

Ответ 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)