xod22 2022. 3. 15. 15:00
728x90

๋ชจํ‰๊ท ์— ๋Œ€ํ•œ ์œ ์˜์„ฑ ๊ฒ€์ •์œผ๋กœ t-test ๊ฒ€์ •์„ ์‹ค์‹œํ•œ๋‹ค.

 

๋‹ค์Œ๊ณผ ๊ฐ™์ด ํฌ๊ฒŒ ์„ธ๊ฐ€์ง€์˜ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

1. ๋‹จ์ผํ‘œ๋ณธ t-๊ฒ€์ •(One-sample t-test)

2. ๋…๋ฆฝํ‘œ๋ณธ t-๊ฒ€์ •(Independent-tw-sample t-test)

3. ๋Œ€์‘ํ‘œ๋ณธ t-๊ฒ€์ •(Paired-two-sample t-test)


๋‹จ์ผํ‘œ๋ณธ t-๊ฒ€์ •

 

: ๊ด€์‹ฌ์žˆ๋Š” ์—ฐ์†ํ˜• ๋ณ€์ˆ˜์˜ ํ‰๊ท ๊ฐ’์„ ํŠน์ • ๊ธฐ์ค€๊ฐ’๊ณผ ๋น„๊ตํ•˜์—ฌ ๊ทธ ์ฐจ์ด๊ฐ€ ํ†ต๊ณ„์ ์œผ๋กœ ์œ ์˜ํ•œ๊ฐ€๋ฅผ ํŒ๋‹จํ•˜๋Š” ๋ฐฉ๋ฒ•.

p-value๊ฐ€ ์œ ์˜์ˆ˜์ค€(์ผ๋ฐ˜์ ์œผ๋กœ 0.05)๋ณด๋‹ค ์ž‘์œผ๋ฉด, ๊ท€๋ฌด๊ฐ€์„ค ๊ธฐ๊ฐ

 

 

1. ํŒจํ‚ค์ง€ ์ž„ํฌํŠธ

from sklearn.datasets import load_iris
import pandas as pd
import numpy as np
from scipy.stats import ttest_1samp

 

2. ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

iris=load_iris()
iris_nparray=iris.data
iris_dataframe=pd.DataFrame(iris.data, columns=iris.feature_names)

 

3. sepal_length ๋ณ€์ˆ˜๊ฐ€ 99%์‹ ๋ขฐ์ˆ˜์ค€์—์„œ ํ‰๊ท  5.0cm์™€ ๋™์ผํ•œ์ง€ ๊ฒ€์ •

#H0 : m=5
#H1 : m์€ 5์™€ ๊ฐ™์ง€ ์•Š๋‹ค

 

ttest_1samp(iris_dataframe['sepal length (cm)'], 5.0)

P-value=0.00์ด๋ฏ€๋กœ ๊ท€๋ฌด๊ฐ€์„ค์„ ๊ธฐ๊ฐํ•œ๋‹ค!

 


๋…๋ฆฝํ‘œ๋ณธ t-๊ฒ€์ •

 

: ๋‘๊ฐœ์˜ ๋…๋ฆฝ์ ์ธ ์ •๊ทœ๋ถ„ํฌ์—์„œ ๋‚˜์˜จ n1, n2๊ฐœ์˜ ๋ฐ์ดํ„ฐ์…‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๋ฐ์ดํ„ฐ ์…‹์˜ ํ‰๊ท ์ด ํ†ต๊ณ„์ ์œผ๋กœ ๋™์ผํ•œ์ง€ ํŒ๋‹จํ•จ.

์˜ˆ) ๊ณ ์–‘์ด๋“ค์˜ ์„ฑ๋ณ„์— ๋”ฐ๋ฅธ ๋ชธ๋ฌด๊ฒŒ ํ‰๊ท ์ด ํ†ต๊ณ„์ ์œผ๋กœ ๊ฐ™๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธ

-> ์•”์ปท, ์ˆ˜์ปท ๋‘์ง‘๋‹จ์— ๋Œ€ํ•œ ๋…๋ฆฝํ‘œ๋ณธ t-๊ฒ€์ •์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ!

 

p-value๊ฐ€ ์œ ์˜์ˆ˜์ค€๋ณด๋‹ค ์ž‘์œผ๋ฉด ๊ท€๋ฌด๊ฐ€์„ค ๊ธฐ๊ฐ, ๋‘๊ฐœ์˜ ๋ฐ์ดํ„ฐ์…‹(๋‘์ง‘๋‹จ)์€ ํ†ต๊ณ„์ ์œผ๋กœ ์œ ์˜ํ•œ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฒฐ๋ก .

 

 

1. ํŒจํ‚ค์ง€ ๋ฐ ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

from scipy.stats import ttest_ind
iris=load_iris()
iris_nparray=iris.data
iris_dataframe=pd.DataFrame(iris.data, columns=iris.feature_names)

 

2. sepal length, sepal width -> ํ‰๊ท ์ด 99%์‹ ๋ขฐ์ˆ˜์ค€์—์„œ ๋™์ผํ•œ์ง€ ํ…Œ์ŠคํŠธ(๋ถ„์‚ฐ์ด ๋™์ผํ•˜์ง€ ์•Š์Œ)
#H0: m1=m2
#H1: m1, m2ํ‰๊ท ์ด ๋‹ค๋ฅผ๊ฒƒ์ด๋‹ค

 

ttest_ind(iris_dataframe['sepal length (cm)'], iris_dataframe['sepal width (cm)'], equal_var=False)

P-value=0.00์ด๋ฏ€๋กœ ๊ท€๋ฌด๊ฐ€์„ค์„ ๊ธฐ๊ฐํ•œ๋‹ค.

 


๋Œ€์‘ํ‘œ๋ณธ t-๊ฒ€์ •

 

: ๋‹จ์ผ๋ชจ์ง‘๋‹จ์— ๋Œ€ํ•ด ๋‘ ๋ฒˆ์˜ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ€ํ–ˆ์„ ๋•Œ, ๋‘ ๋ฒˆ์˜ ์ฒ˜๋ฆฌ์— ๋”ฐ๋ฅด ํ‰๊ท ์ด ํ†ต๊ณ„์ ์œผ๋กœ ๋™์ผํ•œ์ง€๋ฅผ ํŒ๋‹จํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

์˜ˆ) ์ˆ˜๋ฉด์˜์–‘์ œ์˜ ํšจ๊ณผ๋ฅผ ๊ฒ€์ฆํ•˜๊ณ ์ž 10๋ช…์˜ ํ™˜์ž๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์˜์–‘์ œ ๋ณต์šฉ ์ „๊ณผ ํ›„์˜ ์ˆ˜๋ฉด์‹œ๊ฐ„์„ ์ธก์ •ํ•˜์—ฌ ๋ณต์šฉ ํ›„ ์ˆ˜๋ฉด์‹œ๊ฐ„์ด ๋” ๋Š˜์–ด๋‚ฌ๋Š”์ง€ ํ™•์ธํ•  ๋•Œ ๋Œ€์‘ํ‘œ๋ณธ t-๊ฒ€์ •(๋‹จ์ธก ๊ฒ€์ •)์„ ์‹ค์‹œํ•œ๋‹ค.

 

๋ถ„์„๊ฒฐ๊ณผ, p-value๊ฐ€ ์œ ์˜์ˆ˜์ค€๋ณด๋‹ค ์ž‘์œผ๋ฉด, ๊ท€๋ฌด๊ฐ€์„ค์€ ๊ธฐ๊ฐ๋˜๋ฉฐ, ๋‘๋ฒˆ์˜ ์ฒ˜๋ฆฌ ์ƒํ™ฉ์— ๋Œ€ํ•œ ํ‰๊ท  ์ฐจ์ด๊ฐ€ ํ†ต๊ณ„์ ์œผ๋กœ ์œ ์˜ํ•œ ๊ฒƒ์œผ๋กœ ํŒ๋‹จํ•œ๋‹ค.

-> ์•ž์˜ ์˜ˆ๋ฅผ ์ ์šฉํ•ด๋ณด๋ฉด p-value๊ฐ€ ์œ ์˜์ˆ˜์ค€๋ณด๋‹ค ์ž‘์„ ๋•Œ ์ˆ˜๋ฉด์˜์–‘์ œ ๋ณต์šฉ ์ „๊ณผ ํ›„์˜ ์ˆ˜๋ฉด ์‹œ๊ฐ„์˜ ํ‰๊ท  ์ฐจ์ด๊ฐ€ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ˆ˜๋ฉด์˜์–‘์ œ ๋ณต์šฉ ํ›„ ์ˆ˜๋ฉด์‹œ๊ฐ„์ด ๋Š˜์—ˆ๋‹ค๋Š” ๊ฒฐ๋ก ์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๋‹ค.

 

 

1. ํŒจํ‚ค์ง€ ์ž„ํฌํŠธ ๋ฐ ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

from scipy.stats import ttest_rel
iris=load_iris()
iris_nparray=iris.data
iris_dataframe=pd.DataFrame(iris.data, columns=iris.feature_names)

 

2. sepal length์™€ sepal width๊ฐ€ 99%์‹ ๋ขฐ์ˆ˜์ค€์—์„œ ํ‰๊ท ์ด ๋™์ผํ•œ์ง€

->๋™์ผํ•œ sample ๋น„๊ต

ttest_rel(iris_dataframe['sepal length (cm)'], iris_dataframe['sepal width (cm)'])

P-value=0.00์ด๋ฏ€๋กœ ๊ธฐ๊ฐํ•œ๋‹ค. ์ฆ‰ ํ‰๊ท ์— ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

728x90
๋Œ“๊ธ€์ˆ˜0