< ํ๊ท๋ถ์์ด๋ >
< ํ๊ท๋ถ์์ ํน์ง, ์ข ๋ฅ >
# ํ๊ท๋ถ์์ ํน์ง
# ํ๊ท๋ถ์์ ์ข ๋ฅ
ํ๊ท๋ถ์์ ํ๊ท ๊ณ์์ ์ ํ์ฌ๋ถ, ๋ ๋ฆฝ๋ณ์์ ๊ฐ์, ์ข ์๋ณ์์ ๊ฐ์์ ๋ฐ๋ผ ์ฌ๋ฌ๊ฐ์ง
์ ํ์ผ๋ก ๋๋ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ด ์ค ๋ฐ์ดํฐ๋ถ์์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ์ ํํ๊ท๋ถ์๊ณผ
๋ก์ง์คํฑ ํ๊ท๋ถ์์ ๊ฐ๋ ์ ํ์ตํ๊ฒ ์ต๋๋ค.
< ์ ํฉ์ฑ ๊ฒ์ฆ & ๊ฒฐ๊ณผ ํด์ >
# 1. ํ๊ท๋ชจ๋ธ์ด ์ผ๋ง๋ ์ค๋ช ๋ ฅ์ ๊ฐ๋์ง?
< Python ์ฝ๋ ์ค์ต >
import pandas as pd
import numpy as np
# ๋ฐ์ดํฐ ๋ถํฌ ํ์ธ์ ์ํ plt ๋ผ์ด๋ธ๋ฌ๋ฆฌ import
import matplotlib.pyplot as plt
#sklearn ์์ ์ ๊ณตํ๋ ๋ฐ์ดํฐ ์
์ค ํ๋์ธ diabetes ๋ถ๋ฌ์ค๊ธฐ
from sklearn.datasets import load_diabetes
#ํ๊ท๋ถ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ import
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
import seaborn as sns
# ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ , ์ด๋ฆ์ df ๋ก ๋ฐ์์ฃผ๊ฒ ์ต๋๋ค.
df = load_diabetes()
# ๋ฐ์ดํฐ๋ dictionary ํํ๋ก ์ ์ฅ๋์ด ์๊ธฐ ๋๋ฌธ์ keys() ๋ฅผ ํตํด ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์๋์ง ํ์ธํด๋ณด๊ฒ ์ต๋๋ค.
# target์ ๋น๋จ๋ณ์ ์์น์
๋๋ค.
df.keys()
# ๊ฐ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ dataframe ์ผ๋ก ๋ฐ์์ฃผ๋๋ก ํ๊ฒ ์ต๋๋ค.
df = pd.DataFrame(df['data'],index=df['target'], columns=df['feature_names'])
# ์ด 442 ๋ช
์ ๋ํ ๋์ด, ์ฑ๋ณ, bmi(์ฒด์ง๋์ง์).. ๋ฑ์ ๊ฐ์ ธ์์ต๋๋ค.
df
# ๋จ์์ ํํ๊ท๋ถ์
# ๋น๋จ๋ณ์ ์์น(target)์ bmi(์ฒด์ง๋์ง์) ๊ฐ ํ๊ท๋ถ์ ์ํ
# ์ข
์๋ณ์: ๋น๋จ๋ณ์์น
# ๋
๋ฆฝ๋ณ์: bmi(์ฒด์ง๋์ง์)
Y = df.index.values
X = df.bmi.values
#๋ถํฌ ํ์ธ
import matplotlib.pyplot as plt
plt.scatter(X, Y)
# ํ๊ท๋ถ์์ ์ํ 2d array๋ก ๋ณํฉ
X = X.reshape(-1,1)
Y = Y.reshape(-1,1)
# ํ๊ท๋ถ์ ์ํ
# ํ๊ท๊ณ์๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
# ์ด๋ฅผ ํตํด, ํ๊ท์์ ๋์ถํ ์ ์๊ฒ ๋ฉ๋๋ค.
# y= b0 +b1x
# b0, b1
lr.fit(X, Y).intercept_, lr.fit(X, Y).coef_[0]
# ํ๊ท์: y= 152.133 + 949.435*x
# ํ๊ท์ ์ถ๊ฐํ๊ธฐ
# ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ ์ํด ๋ค์ X,Y ์ ์ธ
Y = df.index.values
X = df.bmi.values
#numpy ์์ ์ ๊ณตํ๋ plotfit ํจ์๋ฅผ ํตํด ํ๊ท์ ๊ตฌํ๊ธฐ
b0, b1 = np.polyfit(X, Y, 1)
plt.scatter(X,Y)
plt.plot(X,b1+b0*X,color='red')
plt.show()
# ํ๊ท๋ถ์ ๊ฒฐ๊ณผ ํด์ํ๊ธฐ
# ํด์์์
# ๊ฒฐ์ ๊ณ์ R-squared ํ์ธ -> ๋ชจํ์ ์ ํฉ๋ Prob(F-statistic) ํ์ธ -> P>|t| ํ์ธ
import statsmodels.api as sm
results = sm.OLS(Y, sm.add_constant(X)).fit()
results.summary()
# ๋ฉ์์ง Standard Errors assume that the covariance matrix of the errors is correctly specified.
# ๋ฉ์์ง ํด์ ๋ฐ์ดํฐ ๊ด์ธก์น์ ๋ถ์กฑ์ผ๋ก ์ฒจ๋ ํ
์คํธ์ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒฝ๊ณ (common notice ์ ๋๋ก ์ดํดํด์ฃผ์ธ์)
A. R์ ๊ณฑ
๊ฐ์ด 0.34์ ๋๋ก ์ด๋ 34%๋งํผ์ ์ค๋ช
๋ ฅ์ ๊ฐ์ง๋ค๊ณ ํ๋จํ ์ ์์ต๋๋ค.
0์ ๊ฐ๊น์ธ ์๋ก ์์ธก๊ฐ์ ๋ฏฟ์ ์ ์๊ณ 1์ ๊ฐ๊น์ธ ์๋ก ๋ฏฟ์ ์ ์๋ค๊ณ ํ๋จํฉ๋๋ค.
------------------------------------------------------------------------------------
B. Prob(F-statistic)
๋์ถ๋ ํ๊ท์์ด ํ๊ท๋ถ์ ๋ชจ๋ธ ์ ์ฒด์ ๋ํด ํต๊ณ์ ์ผ๋ก ์๋ฏธ๊ฐ ์๋์ง ํ์
ํฉ๋๋ค.
-> F-statistic์ p-value ๊ฐ์ Prob(F-statistic)์ผ๋ก ํํ๋๋๋ฐ,
์ด๋ 3.47e-42๋ก 0.05๋ณด๋ค ์๊ธฐ์ ์ด ํ๊ท์์ ํ๊ท๋ถ์ ๋ชจ๋ธ ์ ์ฒด์ ๋ํด
ํต๊ณ์ ์ผ๋ก ์๋ฏธ๊ฐ ์๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค.
------------------------------------------------------------------------------------
C. P>|t|
๊ฐ ๋ณ์๊ฐ ์ข
์๋ณ์์ ๋ฏธ์น๋ ์ํฅ์ด ์ ์ํ์ง ํ์
ํฉ๋๋ค.
x1์ ๋ํ p-value๊ฐ 0.000์ผ๋ก ํ๊ธฐ ๋์ด ์๊ธฐ์ 0.05๋ณด๋ค ์์ผ๋ฏ๋ก
target์ ์ค๋ช
ํ๋๋ฐ ์ ์ํ๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค.
# ์๋ก ์๊ฒ ๋ ๊ฐ๋
df.bmi ์ df['bmi']๋ ๊ฐ๋ค
df.index๋ฅผ ํตํด์ ์ธ๋ฑ์ค ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์๋ค
df.bmi.values๋ฅผ ํ๋ฉด ๊ฐ๋ค์ ๋ํ์ด ๋ฐฐ์ด๋ก ๊ฐ์ ธ์ฌ ์ ์๋ค
# Reference
ํ๊ท๋ถ์ ๊ฒฐ๊ณผ์ ํด์๊ณผ R²(์ค๋ช ๋ ฅ,๊ฒฐ์ ๊ณ์)์ ์๋ฏธ, ๊ทธ๋ฆฌ๊ณ R²์ ์๊ด๊ณ์์ ์ ๊ณฑ. ์?
์ผ๋จ ๋ง๊ตฌ๋ง๊ตฌ ํ๊ท๋ถ์์ ํด๋ณด๊ธด ํ๋๋ฐ, ํ๊ท๋ถ์์ ํ๊ณ ๋๋ ์ฌ๋ฌ ๊ฐ์ง ๊ฒฐ๊ณผ๊ฐ ํญ ํ์ด๋์์๊ฑฐ๋ ์. ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ๋ฌด์จ ์๋ฏธ์ธ์ง ํด์ํ ์ ์๋ ๊ณ ํ๊ฒฉ ํด์ ๋ฅ๋ ฅ์ ๋ฐฐ์ํด์ผ ํ๊ฒ ์ต๋
recipesds.tistory.com
'Knowledge๐ฆข > ํต๊ณํ ๊ธฐ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํต๊ณ์ผ ๋์ 2] A/B ํ ์คํธ, ์ ์์์ค, p-value (1) | 2024.06.10 |
---|---|
[ํต๊ณ์ผ ๋์ 1] ๋ฐ์ดํฐ์ ์ข ๋ฅ, ๋ถ์ฐ, ํ์คํธ์ฐจ, ์ ๊ท๋ถํฌ (1) | 2024.06.05 |
[ํต๊ณํ ๊ธฐ์ด] ์ ๋ขฐ๊ตฌ๊ฐ์ ๋ํด์ (0) | 2024.06.01 |
[ํต๊ณํ ๊ธฐ์ด] t-value, t-test๊ฐ ๋ญ๊น? (0) | 2024.05.31 |
[ํต๊ณํ ๊ธฐ์ด] ๋ค์ํ ํ๊ท ์ด์ผ๊ธฐ - ์ด์์น, ์์์์ผ๊ทธ๋ฆผ, ํ๊ท 3๋์ฅ (0) | 2024.05.27 |