여기 에서 선형 모델에서 AIC를 계산하는 방법을 물었습니다. 방법을 AIC를 갖는 LinearRegression()
방법으로 대체 linear_model.OLS
하면 OLS 선형 모델에 대한 기울기와 절편을 어떻게 계산할 수 있습니까?
import statsmodels.formula.api as smf
regr = smf.OLS(y, X, hasconst=True).fit()
귀하의 예에서는 계수와 절편을 표시하는 params
속성을 사용할 수 있습니다 regr
. 핵심은 먼저 1.0
s 의 열 벡터를 X 데이터 에 추가해야한다는 것 입니다. 왜? 절편 항은 기술적 으로 1s의 열 벡터에 대한 계수 입니다. 즉, 절편은 1.0의 X "항"을 곱하면 자체적으로 생성되는 계수 일뿐입니다. 이것을 다른 계수와 특징의 합산에 더하면 예측 값의 nx1 배열을 얻을 수 있습니다.
아래는 예입니다.
# Pull some data to use in the regression
from pandas_datareader.data import DataReader
import statsmodels.api as sm
syms = {'TWEXBMTH' : 'usd',
'T10Y2YM' : 'term_spread',
'PCOPPUSDM' : 'copper'
}
data = (DataReader(syms.keys(), 'fred', start='2000-01-01')
.pct_change()
.dropna())
data = data.rename(columns = syms)
# Here's where we assign a column of 1.0s to the X data
# This is required by statsmodels
# You can check that the resulting coefficients are correct by exporting
# to Excel with data.to_clipboard() and running Data Analysis > Regression there
data = data.assign(intercept = 1.)
이제 실제로 회귀를 실행하고 계수를 얻으려면 현재 가지고있는 것 외에 단 한 줄만 필요합니다.
y = data.usd
X = data.loc[:, 'term_spread':]
regr = sm.OLS(y, X, hasconst=True).fit()
print(regr.params)
term_spread -0.00065
copper -0.09483
intercept 0.00105
dtype: float64
따라서 AIC 에 대한 질문과 관련 하여을 호출하기 전에 X 데이터에도 상수가 있는지 확인해야합니다 .fit
.
참고 :를 호출 .fit
하면 회귀 결과 래퍼를 만들고 여기 에있는 모든 속성 목록에 액세스 할 수 있습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다