πŸ“Š 파이썬으둜 λ°°μš°λŠ” 톡계적 κ°€μ„€ κ²€μ •κ³Ό νšŒκ·€ 뢄석: 데이터 κ³Όν•™μ˜ 핡심 도ꡬ 🐍

 μ•ˆλ…•ν•˜μ„Έμš”, 데이터 뢄석에 관심 μžˆλŠ” μ—¬λŸ¬λΆ„! μ˜€λŠ˜μ€ νŒŒμ΄μ¬μ„ μ‚¬μš©ν•΄ 톡계적 κ°€μ„€ κ²€μ •κ³Ό νšŒκ·€ 뢄석을 μˆ˜ν–‰ν•˜λŠ” 방법에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. 이 κ°•λ ₯ν•œ 도ꡬ듀이 μ–΄λ–»κ²Œ 우리의 μ˜μ‚¬κ²°μ •μ„ λ„μ™€μ£ΌλŠ”μ§€, 그리고 μ‹€μ œ 데이터에 μ–΄λ–»κ²Œ μ μš©λ˜λŠ”μ§€ ν•¨κ»˜ μ‚΄νŽ΄λ³ΌκΉŒμš”? πŸ€“


 ν†΅κ³„적 κ°€μ„€ κ²€μ •: λ°μ΄ν„°λ‘œ μ§„μ‹€ μ°ΎκΈ° πŸ•΅️‍♀️


 κ°€μ„€ κ²€μ •μ΄λž€?


κ°€μ„€ 검정은 마치 ν˜•μ‚¬κ°€ 증거λ₯Ό μˆ˜μ§‘ν•˜μ—¬ 범인을 μ°ΎλŠ” 것과 λΉ„μŠ·ν•©λ‹ˆλ‹€. μš°λ¦¬λŠ” μ–΄λ–€ μ£Όμž₯(귀무가섀)을 μ„Έμš°κ³ , 이에 λŒ€ν•œ λ°˜λŒ€ 증거(λŒ€λ¦½κ°€μ„€)λ₯Ό μ°Ύμ•„ λ‚˜μ„­λ‹ˆλ‹€.


예λ₯Ό λ“€μ–΄, "이 동전은 κ³΅μ •ν•˜λ‹€"λΌλŠ” μ£Όμž₯을 κ²€μ¦ν•˜κ³  μ‹Άλ‹€λ©΄:

- 귀무가섀(H₀): 동전은 κ³΅μ •ν•˜λ‹€ (μ•žλ©΄μ΄ λ‚˜μ˜¬ ν™•λ₯  = 50%)

- λŒ€λ¦½κ°€μ„€(H₁): 동전은 κ³΅μ •ν•˜μ§€ μ•Šλ‹€ (μ•žλ©΄μ΄ λ‚˜μ˜¬ ν™•λ₯  ≠ 50%)


 νŒŒμ΄μ¬μœΌλ‘œ κ°€μ„€ κ²€μ •ν•˜κΈ°


파이썬의 `scipy` 라이브러리λ₯Ό μ‚¬μš©ν•˜λ©΄ κ°„λ‹¨ν•˜κ²Œ κ°€μ„€ 검정을 ν•  수 μžˆμ–΄μš”!


```python

from scipy import stats


# 동전 λ˜μ§€κΈ° κ²°κ³Ό (1: μ•žλ©΄, 0: λ’·λ©΄)

coin_flips = [1, 0, 1, 1, 0, 1, 1, 1, 0, 1]


# 이항 κ²€μ • μˆ˜ν–‰

result = stats.binomtest(sum(coin_flips), n=len(coin_flips), p=0.5)

print(f"p-value: {result.pvalue:.4f}")

```

p-value: 0.3438


p-valueκ°€ 0.05보닀 μž‘μœΌλ©΄ 귀무가섀을 κΈ°κ°ν•˜κ³ , 동전이 κ³΅μ •ν•˜μ§€ μ•Šλ‹€κ³  κ²°λ‘  내릴 수 μžˆμŠ΅λ‹ˆλ‹€. ν₯λ―Έμ§„μ§„ν•˜μ§€ μ•Šλ‚˜μš”? 🎭


 νšŒκ·€ 뢄석: 데이터 속 관계 νŒŒν—€μΉ˜κΈ° πŸ“ˆ


 νšŒκ·€ λΆ„μ„μ΄λž€?


νšŒκ·€ 뢄석은 λ³€μˆ˜λ“€ μ‚¬μ΄μ˜ 관계λ₯Ό μˆ˜ν•™μ μœΌλ‘œ ν‘œν˜„ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€. 마치 데이터 ν¬μΈνŠΈλ“€ μ‚¬μ΄μ—μ„œ κ°€μž₯ 잘 μ–΄μšΈλ¦¬λŠ” 선을 κ·Έλ¦¬λŠ” 것과 κ°™μ£ !


 νŒŒμ΄μ¬μœΌλ‘œ νšŒκ·€ λΆ„μ„ν•˜κΈ°


`statsmodels` 라이브러리λ₯Ό μ‚¬μš©ν•˜λ©΄ λ³΅μž‘ν•œ νšŒκ·€ 뢄석도 μ‰½κ²Œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


```python

import statsmodels.api as sm

import numpy as np


# μ˜ˆμ‹œ 데이터 생성

X = np.random.rand(100, 1)

y = 2 + 3 * X + np.random.randn(100, 1)


# νšŒκ·€ 뢄석 μˆ˜ν–‰

X = sm.add_constant(X)

model = sm.OLS(y, X).fit()


print(model.summary())

```


OLS Regression Results ============================================================================== Dep. Variable: y R-squared: 0.519 Model: OLS Adj. R-squared: 0.514 Method: Least Squares F-statistic: 105.6 Date: Thu, 27 Feb 2025 Prob (F-statistic): 3.04e-17 Time: 14:06:59 Log-Likelihood: -143.30 No. Observations: 100 AIC: 290.6 Df Residuals: 98 BIC: 295.8 Df Model: 1 Covariance Type: nonrobust ============================================================================== coef std err t P>|t| [0.025 0.975] ------------------------------------------------------------------------------ const 1.6565 0.207 7.997 0.000 1.245 2.068 x1 3.6168 0.352 10.277 0.000 2.918 4.315 ============================================================================== Omnibus: 5.637 Durbin-Watson: 1.949 Prob(Omnibus): 0.060 Jarque-Bera (JB): 5.048 Skew: -0.525 Prob(JB): 0.0801 Kurtosis: 3.328 Cond. No. 4.40 ============================================================================== Notes: [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.

이 μ½”λ“œλŠ” y = 2 + 3X + Ξ΅ ν˜•νƒœμ˜ 관계λ₯Ό κ°€μ§„ 데이터에 λŒ€ν•΄ νšŒκ·€ 뢄석을 μˆ˜ν–‰ν•©λ‹ˆλ‹€. κ²°κ³Όλ₯Ό 톡해 μš°λ¦¬λŠ” μ‹€μ œ 관계가 μ–Όλ§ˆλ‚˜ μ •ν™•νžˆ μΆ”μ •λ˜μ—ˆλŠ”μ§€ 확인할 수 μžˆμ–΄μš”! 🧐


 μ‹€μ œ μ‚¬λ‘€λ‘œ λ°°μš°λŠ” 데이터 뢄석 🌟


 μ£Όνƒ 가격 μ˜ˆμΈ‘ν•˜κΈ° 🏠


λ³΄μŠ€ν„΄ 주택 가격 데이터셋을 μ‚¬μš©ν•΄ μ‹€μ œ νšŒκ·€ 뢄석을 ν•΄λ΄…μ‹œλ‹€.


```python

from sklearn.datasets import load_boston

from statsmodels.formula.api import ols


# 데이터 λ‘œλ“œ

boston = load_boston()

df = pd.DataFrame(boston.data, columns=boston.feature_names)

df['PRICE'] = boston.target


# νšŒκ·€ λͺ¨λΈ λ§Œλ“€κΈ°

model = ols('PRICE ~ RM + LSTAT', data=df).fit()

print(model.summary())

```


이 뢄석을 톡해 μš°λ¦¬λŠ” 방의 개수(RM)κ°€ μ¦κ°€ν• μˆ˜λ‘ μ§‘ 가격이 μ˜¬λΌκ°€κ³ , μ €μ†Œλ“μΈ΅ λΉ„μœ¨(LSTAT)이 λ†’μ„μˆ˜λ‘ μ§‘ 가격이 λ‚΄λ €κ°„λ‹€λŠ” 것을 μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€. ν₯λ―Έλ‘­μ§€ μ•Šλ‚˜μš”? πŸ€”


 μ œμ‘° 곡정 κ°œμ„  효과 κ²€μ¦ν•˜κΈ° 🏭


μ–΄λ–€ νšŒμ‚¬κ°€ μƒˆλ‘œμš΄ 제쑰 곡정을 λ„μž…ν–ˆλ‹€κ³  κ°€μ •ν•΄λ΄…μ‹œλ‹€. 이 곡정이 μ •λ§λ‘œ νš¨κ³Όκ°€ μžˆλŠ”μ§€ t-κ²€μ •μœΌλ‘œ 확인해볼 수 μžˆμ–΄μš”.


```python

import scipy.stats as stats


# κ°€μƒμ˜ 데이터

before = [10.2, 9.8, 10.0, 10.1, 9.9]

after = [10.5, 10.3, 10.4, 10.3, 10.6]


# λŒ€μ‘ν‘œλ³Έ t-κ²€μ • μˆ˜ν–‰

t_stat, p_value = stats.ttest_rel(before, after)

print(f"t-ν†΅κ³„λŸ‰: {t_stat:.4f}, p-value: {p_value:.4f}")

```

t-ν†΅κ³„λŸ‰: -4.8824, p-value: 0.0081


p-valueκ°€ 0.05보닀 μž‘λ‹€λ©΄, μƒˆλ‘œμš΄ 곡정이 μ‹€μ œλ‘œ νš¨κ³Όκ°€ μžˆλ‹€κ³  κ²°λ‘  내릴 수 μžˆμŠ΅λ‹ˆλ‹€. 과학적인 λ°©λ²•μœΌλ‘œ λΉ„μ¦ˆλ‹ˆμŠ€ μ˜μ‚¬κ²°μ •μ„ λ‚΄λ¦¬λŠ” κ±°μ£ ! πŸ‘¨‍πŸ”¬πŸ‘©‍πŸ”¬


 λ§ˆμΉ˜λ©° πŸŽ‰


톡계적 κ°€μ„€ κ²€μ •κ³Ό νšŒκ·€ 뢄석은 데이터 κ³Όν•™μ˜ κ°•λ ₯ν•œ λ„κ΅¬μž…λ‹ˆλ‹€. νŒŒμ΄μ¬μ„ μ‚¬μš©ν•˜λ©΄ μ΄λŸ¬ν•œ λ³΅μž‘ν•œ 뢄석도 λͺ‡ μ€„μ˜ μ½”λ“œλ‘œ κ°„λ‹¨νžˆ μˆ˜ν–‰ν•  수 있죠. 이제 μ—¬λŸ¬λΆ„λ„ 데이터 속에 μˆ¨κ²¨μ§„ 진싀을 μ°Ύμ•„λ‚Ό μ€€λΉ„κ°€ λ˜μ—ˆμŠ΅λ‹ˆλ‹€!


λ‹€μŒμ—λŠ” 더 κ³ κΈ‰ 주제인 λ¨Έμ‹ λŸ¬λ‹ μ•Œκ³ λ¦¬μ¦˜κ³Ό λ”₯λŸ¬λ‹μ— λŒ€ν•΄ μ•Œμ•„λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€. 데이터 κ³Όν•™μ˜ μ„Έκ³„μ—μ„œ μ—¬λŸ¬λΆ„μ˜ λͺ¨ν—˜μ€ κ³„μ†λ©λ‹ˆλ‹€! πŸš€


κΆκΈˆν•œ μ μ΄λ‚˜ 더 μ•Œκ³  싢은 λ‚΄μš©μ΄ μžˆλ‹€λ©΄ λŒ“κΈ€λ‘œ λ‚¨κ²¨μ£Όμ„Έμš”. ν•¨κ»˜ 배우고 μ„±μž₯ν•˜λŠ” 즐거움을 λ‚˜λˆ λ΄μš”! πŸ“šπŸ’‘






#데이터과학 #파이썬 #톡계뢄석 #νšŒκ·€λΆ„μ„ #κ°€μ„€κ²€μ • #λ°μ΄ν„°λ§ˆμ΄λ‹ #데이터뢄석 #νŒŒμ΄μ¬ν†΅κ³„ #λ°μ΄ν„°μ‚¬μ΄μ–ΈμŠ€ #ν†΅κ³„ν•™μŠ΅ #νŒŒμ΄μ¬μ½”λ”© #λ°μ΄ν„°μ‹œκ°ν™” #λ¨Έμ‹ λŸ¬λ‹κΈ°μ΄ˆ #싀무데이터뢄석 #톡계적좔둠 #파이썬라이브러리 #scipy #statsmodels #λ°μ΄ν„°λ§ˆμ΄λ‹ #λΉ„μ¦ˆλ‹ˆμŠ€μΈν…”λ¦¬μ „μŠ€ #μ˜μ‚¬κ²°μ •λΆ„μ„ #예츑λͺ¨λΈλ§ #λ°μ΄ν„°κΈ°λ°˜μ˜μ‚¬κ²°μ • #νŒŒμ΄μ¬ν”„λ‘œκ·Έλž˜λ°


0 λŒ“κΈ€