基礎統計(29)多重線形回帰
📈 クリーンアップ用語
-重み付け回帰(weighted regression):
📈 王県住宅情報例
# 예제 데이터
subset = ['AdjSalePrice', 'SqFtTotLiving', 'SqFtLot', 'Bathrooms',
'Bedrooms', 'BldgGrade']
print(house[subset].head())
from sklearn.linear_model import LinearRegression
predictors = [ 'SqFtTotLiving', 'SqFtLot', 'Bathrooms',
'Bedrooms', 'BldgGrade']
outcome = 'AdjSalePrice'
house_lm = LinearRegression()
house_lm.fit(house[predictors], house[outcome])
print(f'Intercept: {house_lm.intercept_:.3f}') # 절편
print('Coefficients:') # 계수
for name, coef in zip(predictors, house_lm.coef_):
print(f'{name}:{coef}')
>>>
Intercept: -521871.368
Coefficients:
SqFtTotLiving:228.83060360240796
SqFtLot:-0.06046682065307607
Bathrooms:-19442.840398321056
Bedrooms:-47769.95518521438
BldgGrade:106106.96307898083
解釈📈 モデル評価
from sklearn.metrics import r2_score, mean_squared_error
import numpy as np
fitted = house_lm.predict(house[predictors])
RMSE = np.sqrt(mean_squared_error(house[outcome], fitted))
r2 = r2_score(house[outcome], fitted)
print(f'RMSE: {RMSE:.0f}')
print(f'r2:{r2:.4f}')
>>>
RMSE: 261220
r2:0.5406
import statsmodels.api as sm
model = sm.OLS(house[outcome], house[predictors].assign(const=1)) # assign 메서드는 값이 1인 상수 열을 예측변수에 추가한다.(절편을 모델링하기 위해 필요)
results = model.fit()
results.summary()
ここで使用する代入方法は、値が1の定数列を予測番号に追加します.スライスをモデリングします.
有用な指標は粒界数と呼ばれるR二乗統計量である.R二乗の範囲は0から1であり,モデルデータの変化率を(分散のために)測定した.評価モデルがどれだけデータに適しているかを評価すると,回帰解析を説明するために用いられる.
R二乗値が1に近いほど予測精度が高くなり、式は以下の通りである.R 2 R^2 R 2=(予測値分散)/(実績値分散)
自由度を考慮した修正R二乗(adjusted R−squared)値も示した.これは,モデルにより多くの予測変数を追加することを効果的に罰する.
係数の標準誤差(SE)とt統計量を同時に出力する.
t統計量、および常に一緒に従うp値は、予測変数とターゲット変数がランダムに再分配されると、偶然に得られる範囲から逸脱することを測定するために、係数が統計的に有意義な程度である.
Reference
この問題について(基礎統計(29)多重線形回帰), 我々は、より多くの情報をここで見つけました https://velog.io/@ljs7463/기초통계-29-다중선형회귀テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol