파이썬에서 stepAIC
개요
Python에 stepAIC가 없습니다.
…라고 생각하면 StackOverflow에 이런 기사
응답자가 소개하고 있는 링크( Forward Selection with statsmodels
step_aic
def step_aic(model, exog, endog, **kwargs):
"""
This select the best exogenous variables with AIC
Both exog and endog values can be either str or list.
(Endog list is for the Binomial family.)
Note: This adopt only "forward" selection
Args:
model: model from statsmodels.formula.api
exog (str or list): exogenous variables
endog (str or list): endogenous variables
kwargs: extra keyword argments for model (e.g., data, family)
Returns:
model: a model that seems to have the smallest AIC
"""
# exog, endogは強制的にリスト形式に変換しておく
exog = np.r_[[exog]].flatten()
endog = np.r_[[endog]].flatten()
remaining = set(exog)
selected = [] # 採用が確定された要因
# 定数項のみのAICを計算
formula_head = ' + '.join(endog) + ' ~ '
formula = formula_head + '1'
aic = model(formula=formula, **kwargs).fit().aic
print('AIC: {}, formula: {}'.format(round(aic, 3), formula))
current_score, best_new_score = np.ones(2) * aic
# 全要因を採択するか,どの要因を追加してもAICが上がらなければ終了
while remaining and current_score == best_new_score:
scores_with_candidates = []
for candidate in remaining:
# 残っている要因を1つずつ追加したときのAICを計算
formula_tail = ' + '.join(selected + [candidate])
formula = formula_head + formula_tail
aic = model(formula=formula, **kwargs).fit().aic
print('AIC: {}, formula: {}'.format(round(aic, 3), formula))
scores_with_candidates.append((aic, candidate))
# 最もAICが小さかった要因をbest_candidateとする
scores_with_candidates.sort()
scores_with_candidates.reverse()
best_new_score, best_candidate = scores_with_candidates.pop()
# 候補要因追加でAICが下がったならば,それを確定要因として追加する
if best_new_score < current_score:
remaining.remove(best_candidate)
selected.append(best_candidate)
current_score = best_new_score
formula = formula_head + ' + '.join(selected)
print('The best formula: {}'.format(formula))
return model(formula, **kwargs).fit()
사용법
설명 변수가 x와 f이었을 경우는 이런 느낌.
(['y']가 아니라 'y'여도 됩니다)
후기
맞습니까? 맞습니까?
미도리 본 (데이터 분석을위한 통계 모델링 입문)의 이항 분포와 로지스틱 회귀 장과는 대답이 완전히 일치했습니다.
하지만 잘못되면 알려주세요.
Reference
이 문제에 관하여(파이썬에서 stepAIC), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mytk0u0/items/aa2e3f5a66fe9e2895fa텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)