-
<통계학> 단순선형회귀 - 2 (with Python)데이터 분석 관련 공부 2024. 1. 31. 22:13
https://jinhyunbae.tistory.com/141
단순선형회귀에 대한 Python코드 구현을 해보자
Python으로 통계분석을 하려면 statsmodels 라이브러리를 사용해야한다.
사용한 데이터는 kaggle의 kc house data이다.
https://www.kaggle.com/datasets/shivachandel/kc-house-data
import pandas as pd import matplotlib.pyplot as plt house = pd.read_csv('../data/kc_house_data.csv') display(house.head(10))
회귀모형의 귀무가설은 "회귀모형이 유의하다." 대립가설은 "회귀모형은 유의하지 않다"이다.
그래서 검정의 대상은 회귀계수와 편향이다. 그 중 보통 회귀계수에 대해서 검정하는 것을 목표로 한다.
그 중에서도 주거공간 평방피트 데이터인 sqft_living변수로 가격(price)를 예측하는 회귀분석을 python으로 구현해본다.
from statsmodels.formula.api import ols y = house[['price']] X = house[['sqft_living']] lr = ols('price ~ sqft_living', data=house).fit() y_pred = lr.predict(X)
통계 회귀분석을 python으로 하려면 statsmodels.formula.api의 ols가 필요하다.
ols의 파라미터로 price ~ sqft_living으로 식을 작성하여 적으면
이게 sqft_living로 price를 예측하는 회귀식을 적합하는 코드가 된다.
적합하여 데이터의 산포도와 예측된 결과 직선을 그래프로 그리면 회귀선의 예측을 시각화하여 볼 수 있다.
plt.scatter(X, y) plt.plot(X, y_pred, color='red') plt.xlabel('sqft_living', fontsize=10) plt.ylabel('price', fontsize=10) plt.title('Linear Regression Result') plt.show()
회귀 모형의 시각화 결과 직선으로는 모든 데이터에 대해서는 잘 설명하지 못하고 있는 것으로 보인다.
따라서 단순 회귀 분석으로는 충분한 설명이 안되는 모형인 것 같다.
model.summary()함수를 이용하여 모델적합 결과를 요약하여 볼 수 있다.
lr.summary()
회귀 모형의 유의성은 p-value로 확인할 수 있고, 모델의 설명력은 R-squared로 확인할 수 있다.
sqft_living의 회귀계수에 대한 p-value는 0.05보다 작기 때문에 유의하다고 볼 수 있다.
R-squared는 0.493으로 이 모형이 해당 데이터의 49.3퍼센트를 설명한다고 할 수 있다.
모델의 성능은 그렇게 좋지 못하지만 산업에 따라서는 엄청난 모델이 될 수도 있다.
'데이터 분석 관련 공부' 카테고리의 다른 글
<머신러닝> 단순선형회귀 (Linear Regression with Python) (0) 2024.02.02 <통계학> 단순선형회귀 - 1 (0) 2024.01.30 <통계학> 분산분석(ANOVA) - 4 (Two-way ANOVA with Python) (1) 2024.01.26 <통계학> 분산분석(ANOVA) - 3 (Two-way ANOVA) (2) 2024.01.26 <통계학> 분산분석(ANOVA) - 2 (One way ANOVA with Python) (1) 2024.01.25