t-๊ฒ€์ •

ํ˜œ์ฟฐยท2023๋…„ 11์›” 10์ผ
0
post-thumbnail

๐Ÿ“• ๊ฐœ๋…

1. t-๊ฒ€์ •

t-๊ฒ€์ •์€ ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ๋‘ ์ง‘๋‹จ์˜ ํ‰๊ท  ์ฐจ์ด๊ฐ€ ํ†ต๊ณ„์ ์œผ๋กœ ์œ ์˜๋ฏธํ•œ์ง€๋ฅผ ํ‰๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ชจ์ง‘๋‹จ์˜ ๋ถ„์‚ฐ์ด๋‚˜ ํ‘œ์ค€ํŽธ์ฐจ๋ฅผ ์•Œ์ง€ ๋ชปํ•  ๋•Œ ๋ชจ์ง‘๋‹จ์„ ๋Œ€ํ‘œํ•˜๋Š” ํ‘œ๋ณธ์œผ๋กœ๋ถ€ํ„ฐ ์ถ”์ •๋œ ๋ถ„์‚ฐ์ด๋‚˜ ํ‘œ์ค€ํŽธ์ฐจ๋ฅผ ๊ฐ€์ง€๊ณ  ๊ฒ€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ
โ€œ๋‘ ๋ชจ์ง‘๋‹จ์˜ ํ‰๊ท ๊ฐ„์˜ ์ฐจ์ด๋Š” ์—†๋‹คโ€๋ผ๋Š” ๊ท€๋ฌด๊ฐ€์„ค๊ณผ โ€œ๋‘ ๋ชจ์ง‘๋‹จ์˜ ํ‰๊ท  ๊ฐ„์— ์ฐจ์ด๊ฐ€ ์žˆ๋‹คโ€๋ผ๋Š” ๋Œ€๋ฆฝ๊ฐ€์„ค ์ค‘์— ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํ†ต๊ณ„์  ๊ฒ€์ •๋ฐฉ๋ฒ•์ด๋‹ค.
t-๊ฒ€์ •์€ ์ฃผ๋กœ ๋ฒ”์ฃผํ˜• ๊ฐ’์„ 2๊ฐœ๋ฅผ ๋…๋ฆฝ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

๐Ÿ“Ž ์–‘์ธก๊ฒ€์ •๊ณผ ๋‹จ์ธก๊ฒ€์ •

t-๊ฒ€์ •์—์„œ ์–‘์ธก๊ฒ€์ •๊ณผ ๋‹จ์ธก๊ฒ€์ •์˜ ๊ฐœ๋…์€ ์ค‘์š”ํ•˜๋‹ค. ์–‘์ธก๊ฒ€์ •์ธ์ง€, ๋‹จ์ธก๊ฒ€์ •์ธ์ง€์— ๋”ฐ๋ผ ๊ฒ€์ฆ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค. ๋‹จ์ธก/์–‘์ธก๊ฒ€์ •์€ ๊ท€๋ฌด๊ฐ€์„ค ํ…Œ์ŠคํŠธ์— ์‚ฌ์šฉ๋˜๋ฉฐ, ์ถ”์ •๊ฐ’(t)์ด ์ž„๊ณ„์˜์—ญ(๊ธฐ๊ฐ์—ญ)์— ์žˆ๋Š” ๊ฒฝ์šฐ ๋Œ€๋ฆฝ๊ฐ€์„ค์ด ์ฑ„ํƒ๋œ๋‹ค.

1. ์–‘์ธก๊ฒ€์ • (Two-Tailed Test)

  • ์–‘์ธก๊ฒ€์ •์€ ๊ท€๋ฌด๊ฐ€์„ค์ด ํŠน์ •ํ•œ ๋ฐฉํ–ฅ์„ ๊ฐ€๋ฆฌํ‚ค์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋œ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‘ ๊ทธ๋ฃน์˜ ํ‰๊ท ์ด ๊ฐ™๋‹ค๋Š” ๊ท€๋ฌด๊ฐ€์„ค์„ ์ƒ๊ฐํ•ด๋ณด์ž. ์–‘์ธก๊ฒ€์ •์—์„œ๋Š” ๋‘ ๊ทธ๋ฃน์˜ ํ‰๊ท ์ด ๋‹ค๋ฅด๋‹ค๋Š” ๋Œ€๋ฆฝ๊ฐ€์„ค์„ ์‹œํ—˜ํ•˜๊ฒŒ ๋œ๋‹ค.
  • ๊ฒ€์ • ํ†ต๊ณ„๋Ÿ‰์ด ๊ท€๋ฌด๊ฐ€์„ค์— ๋Œ€ํ•œ ๊ธฐ๋Œ€๊ฐ’์œผ๋กœ๋ถ€ํ„ฐ ์–ผ๋งˆ๋‚˜ ๊ทน๋‹จ์ ์ธ์ง€๋ฅผ ํ™•์ธํ•˜๊ณ , ์–‘์ธก ๊ท€๋ฌด๊ฐ€์„ค์„ ๊ฒ€์ •ํ•œ๋‹ค.

2. ๋‹จ์ธก๊ฒ€์ • (One-Tailed Test)

  • ๋‹จ์ธก๊ฒ€์ •์€ ๊ท€๋ฌด๊ฐ€์„ค์ด ์–ด๋Š ํ•œ ๋ฐฉํ–ฅ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋œ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ์–ด๋–ค ์น˜๋ฃŒ๊ฐ€ ํšจ๊ณผ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ท€๋ฌด๊ฐ€์„ค์„ ์ƒ๊ฐํ•ด๋ณด์ž. ๋‹จ์ธก๊ฒ€์ •์—์„œ๋Š” ์น˜๋ฃŒ์˜ ํšจ๊ณผ๊ฐ€ ์ปค์กŒ๋‹ค ํ˜น์€ ์ž‘์•„์กŒ๋‹ค๋Š” ๋Œ€๋ฆฝ๊ฐ€์„ค์„ ์‹œํ—˜ํ•˜๊ฒŒ ๋œ๋‹ค.
  • ๊ฒ€์ • ํ†ต๊ณ„๋Ÿ‰์ด ๊ท€๋ฌด๊ฐ€์„ค์— ๋Œ€ํ•œ ๊ธฐ๋Œ€๊ฐ’์˜ ํ•œ์ชฝ ๊ผฌ๋ฆฌ์— ์œ„์น˜ํ•˜๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ณ , ํ•ด๋‹น ๋ฐฉํ–ฅ์œผ๋กœ์˜ ๊ท€๋ฌด๊ฐ€์„ค์„ ๊ฒ€์ •ํ•œ๋‹ค.

๋‹จ์ธก๊ฒ€์ •์€ ์–‘์ธก๊ฒ€์ •๋ณด๋‹ค ๋” ๊ฐ•๋ ฅํ•œ ๊ฒ€์ •์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ฐ€์„ค ์„ค์ •๊ณผ ๊ฒ€์ • ๋ฐฉํ–ฅ์— ๋Œ€ํ•œ ์‚ฌ์ „ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ์ ์—์„œ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์ ์ ˆํ•œ ์„ ํƒ์€ ์—ฐ๊ตฌ์ž์˜ ๋ชฉ์ ๊ณผ ์—ฐ๊ตฌ์˜ ํŠน์„ฑ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“Ž ์ฃผ์š” ์šฉ์–ด

  • t-ํ†ต๊ณ„๋Ÿ‰(t-statistic): ๋‘ ๊ทธ๋ฃน ๊ฐ„์˜ ํ‰๊ท  ์ฐจ์ด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’.
  • p-value: ๊ท€๋ฌด๊ฐ€์„ค์ด ์ฐธ์ผ ๋•Œ, ๊ด€์ธก๋œ ๋ฐ์ดํ„ฐ๋‚˜ ๋” ๊ทน๋‹จ์ ์ธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜์˜ฌ ํ™•๋ฅ . ์ž‘์„์ˆ˜๋ก ๊ท€๋ฌด๊ฐ€์„ค์„ ๊ธฐ๊ฐํ•˜๋Š” ๋ฐ ๊ฐ•๋ ฅํ•œ ์ฆ๊ฑฐ๊ฐ€ ๋จ.
  • ์ž์œ ๋„(degrees of freedom): ํ‘œ๋ณธ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ t-ํ†ต๊ณ„๋Ÿ‰์˜ ๋ถ„ํฌ๋ฅผ ์กฐ์ ˆํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋จ. ์ž์œ ๋„๊ฐ€ ์ปค์งˆ์ˆ˜๋ก t-ํ†ต๊ณ„๋Ÿ‰ ๋ถ„ํฌ๊ฐ€ ์ •๊ทœ๋ถ„ํฌ์— ๊ฐ€๊นŒ์›Œ์ง.

t-๊ฒ€์ •์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž‘์€ ํ‘œ๋ณธ ํฌ๊ธฐ์—์„œ๋„ ํšจ๊ณผ์ ์œผ๋กœ ํ‰๊ท  ์ฐจ์ด๋ฅผ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.

2. z-๊ฒ€์ •

z-๊ฒ€์ •์€ ํ‘œ์ค€ ์ •๊ทœ๋ถ„ํฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‘ ์ง‘๋‹จ ๊ฐ„์˜ ํ‰๊ท  ์ฐจ์ด๊ฐ€ ํ†ต๊ณ„์ ์œผ๋กœ ์œ ์˜๋ฏธํ•œ์ง€๋ฅผ ํ‰๊ฐ€ํ•˜๋Š” ํ†ต๊ณ„์  ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋‹ค. ์ฃผ๋กœ ํฐ ํ‘œ๋ณธ ํฌ๊ธฐ์—์„œ ์‚ฌ์šฉ๋ผ์„œ, ๋ชจ์ง‘๋‹จ์˜ ๋ถ„ํฌ๊ฐ€ ์ •๊ทœ๋ถ„ํฌ๋ฅผ ๋”ฐ๋ฅผ ๋•Œ ํšจ๊ณผ์ ์œผ๋กœ ์ ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.

z-๊ฒ€์ •์˜ ํ•ต์‹ฌ ์•„์ด๋””์–ด๋Š” ํ‘œ๋ณธ ๋ฐ์ดํ„ฐ๋กœ๋ถ€ํ„ฐ ๊ณ„์‚ฐ๋œ ํ‰๊ท  ์ฐจ์ด๊ฐ€ ์šฐ์—ฐ์— ์˜ํ•œ ๊ฒƒ์ธ์ง€ ์•„๋‹ˆ๋ฉด ๋ชจ์ง‘๋‹จ์—์„œ ์‹ค์ œ๋กœ ์˜๋ฏธ ์žˆ๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€๋ฅผ ๊ฒ€์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ฒ€์ • ํ†ต๊ณ„๋Ÿ‰(z-ํ†ต๊ณ„๋Ÿ‰)์„ ๊ณ„์‚ฐํ•˜๊ณ , ์ด ๊ฐ’์ด ํŠน์ • ์ž„๊ณ„๊ฐ’์„ ๋„˜์œผ๋ฉด ํ‰๊ท  ์ฐจ์ด๊ฐ€ ํ†ต๊ณ„์ ์œผ๋กœ ์œ ์˜๋ฏธํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค.
z-๊ฒ€์ •์€ ๋ชจ์ง‘๋‹จ์˜ ๋ถ„ํฌ๊ฐ€ ์ •๊ทœ๋ถ„ํฌ๋ฅผ ๋”ฐ๋ฅผ ๋•Œ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ชจ์ง‘๋‹จ์˜ ๋ถ„ํฌ๊ฐ€ ์•Œ๋ ค์ ธ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค.

๐Ÿ“Ž ์ฃผ์š” ์šฉ์–ด

  • z-ํ†ต๊ณ„๋Ÿ‰(z-statistic): ๋‘ ๊ทธ๋ฃน ๊ฐ„์˜ ํ‰๊ท  ์ฐจ์ด๋ฅผ ํ‘œ์ค€ ์ •๊ทœ๋ถ„ํฌ์˜ ๋‹จ์œ„๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’.
  • p-value: ๊ท€๋ฌด๊ฐ€์„ค์ด ์ฐธ์ผ ๋•Œ, ๊ด€์ธก๋œ ๋ฐ์ดํ„ฐ๋‚˜ ๋” ๊ทน๋‹จ์ ์ธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜์˜ฌ ํ™•๋ฅ . ์ž‘์„์ˆ˜๋ก ๊ท€๋ฌด๊ฐ€์„ค์„ ๊ธฐ๊ฐํ•˜๋Š” ๋ฐ ๊ฐ•๋ ฅํ•œ ์ฆ๊ฑฐ๊ฐ€ ๋จ.
  • ํ‘œ์ค€ ์ •๊ทœ๋ถ„ํฌ์˜ ์ž„๊ณ„๊ฐ’: ์ผ๋ฐ˜์ ์œผ๋กœ 1.96 (95% ์‹ ๋ขฐ์ˆ˜์ค€์—์„œ ์–‘์ธก ๊ฒ€์ •์„ ํ•  ๋•Œ).

z- ๊ฒ€์ •๊ณผ t-๊ฒ€์ •์€ ๋‘˜ ๋‹ค ํ‰๊ท ์„ ์ด์šฉํ•œ๋‹ค๋Š” ์ ์—์„œ ๊ณตํ†ต์ ์ด ์žˆ๋‹ค.
ํ•˜์ง€๋งŒ, z-๊ฒ€์ •์€ ๋ชจ์ง‘๋‹จ์˜ ๋ถ„ํฌ๊ฐ€ ์ •๊ทœ๋ถ„ํฌ๋ฅผ ๋”ฐ๋ฅด๊ณ  ํ‘œ๋ณธ์˜ ํฌ๊ธฐ๊ฐ€ ํด ๋•Œ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ˜๋ฉด, t-๊ฒ€์ •์€ ํ‘œ๋ณธ์˜ ํฌ๊ธฐ๊ฐ€ ํฐ ๋ฐ์ดํ„ฐ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ๋ฐ์ดํ„ฐ์—์„œ๋„ ํ‰๊ท  ์ฐจ์ด๋ฅผ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ์–ด ์œ ์šฉํ•˜๋‹ค๋Š” ์ฐจ์ด์ ์ด ์žˆ๋‹ค.

๐Ÿ“• ์ข…๋ฅ˜์™€ ์‹ค์Šต

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

One Sample t-test๋Š” ๊ทธ๋ฃน์ด 1๊ฐœ์ผ๋•Œ ๋ชจ์ง‘๋‹จ์˜ ์˜ˆ์ƒ ํ‰๊ท ์น˜๊ฐ€ ๋งž๋Š”์ง€ ํ‘œ๋ณธ์„ ํ†ตํ•ด ๋น„๊ต ๊ฒ€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ •๊ทœ๋ถ„ํฌ์˜(๋ชจ์ง‘๋‹จ) ํ‘œ๋ณธ์— ๋Œ€ํ•ด ๊ธฐ๋Œ€๊ฐ’์„ ์กฐ์‚ฌ(ํ‰๊ท ์˜ ์ฐจ์ด ์‚ฌ์šฉ)ํ•œ๋‹ค.

๐Ÿ”Ž ์ฝ”๋“œ ์˜ˆ์ œ

์—ฌ์•„ ์‹ ์ƒ์•„์˜ ๋ชธ๋ฌด๊ฒŒ๋Š” ํ‰๊ท  2800(g)์œผ๋กœ ์•Œ๋ ค์ ธ ์™”์œผ๋‚˜ ์ด๋ณด๋‹ค ๋” ํฌ๋‹ค๋Š” ์ฃผ์žฅ์ด ๋‚˜์™”๋‹ค. ํ‘œ๋ณธ์œผ๋กœ ์—ฌ์•„ 18๋ช…์„ ๋ฝ‘์•„ ์ฒด์ค‘์„ ์ธก์ •ํ•˜์˜€๋‹ค๊ณ  ํ•  ๋•Œ ์ƒˆ๋กœ์šด ์ฃผ์žฅ์ด ๋งž๋Š”์ง€ ๊ฒ€์ •ํ•ด ๋ณด์ž. ๋ฐ์ดํ„ฐ๋Š” babyboom.csv๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๊ฐ€์„ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

๊ท€๋ฌด : ์—ฌ์•„ ์‹ ์ƒ์•„์˜ ๋ชธ๋ฌด๊ฒŒ๋Š” ํ‰๊ท  2800(g)์ด๋‹ค.
๋Œ€๋ฆฝ : ์—ฌ์•„ ์‹ ์ƒ์•„์˜ ๋ชธ๋ฌด๊ฒŒ๋Š” ํ‰๊ท  2800(g)๋ณด๋‹ค ํฌ๋‹ค.

import numpy as np 
import scipy.stats as stats
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd 

data2 = pd.read_csv('../testdata/babyboom.csv')
fdata = data2[data2['gender']==1]
print(fdata, len(fdata)) 
print(np.mean(fdata['weight'])) 

# ์ •๊ทœ์„ฑ ํ™•์ธ
print(stats.shapiro(fdata.iloc[:2])) # pvalue=0.000176288565 < 0.05์ด๋ฏ€๋กœ ์ •๊ทœ์„ฑ ๋งŒ์กฑ ๋ชปํ•จ

# ์ •๊ทœ์„ฑ ํ™•์ธ ์‹œ๊ฐํ™” 1 : Q-Q plot
stats.probplot(fdata.iloc[:,2],plot=plt) 
plt.show()

# ์ •๊ทœ์„ฑ ํ™•์ธ ์‹œ๊ฐํ™” 2 : histogram
sns.displot(fdata.iloc[:,2], kde=True)
plt.show()

result3 = stats.ttest_1samp(fdata.weight, popmean=2800 )
print(result3)
print('statistic(t๊ฐ’) : %.5f, pvalue:%.5f'%result3)

shapiroํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ •๊ทœ์„ฑ์„ ๊ฒ€์‚ฌํ•œ๋‹ค. Q-Q plot, histogram๋“ฑ์„ ํ†ตํ•ด ์ •๊ทœ์„ฑ์„ ํ™•์ธ์„ ์‹œ๊ฐํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
๋‹ค์Œ์œผ๋กœ ttest_1sampํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด p๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.
์ด ๋ฌธ์ œ์—์„œ pvalue๊ฐ€ 0.03927์œผ๋กœ 0.05๋ณด๋‹ค ์ž‘๊ธฐ๋•Œ๋ฌธ์— ๊ท€๋ฌด๊ฐ€์„ค์„ ๊ธฐ๊ฐํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ์—ฌ์•„ ์‹ ์ƒ์•„์˜ ๋ชธ๋ฌด๊ฒŒ๋Š” ํ‰๊ท  2800(g)๋ณด๋‹ค ํฌ๋‹ค.

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

Independent Sample t-test๋Š” ๋น„๊ต ์ง‘๋‹จ์ด ๋‘๊ฐœ์ธ ๊ฒฝ์šฐ์— ํ‰๊ท ์ด ๋‹จ์ˆœํžˆ ์œ ์˜ํ•œ ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€๋ฅผ ๊ฒ€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๋…๋ฆฝ์ ์ธ ๋‘ ๋ชจ์ง‘๋‹จ์˜ ํ‰๊ท ์— ์œ ์˜๋ฏธํ•œ ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€ ๋น„๊ตํ•˜๊ธฐ์œ„ํ•ด ๊ฐ ํ‘œ๋ณธ๋“ค์˜ ํ‰๊ท ์„ ๋น„๊ตํ•œ๋‹ค.

๐Ÿ”Ž ์ฝ”๋“œ ์˜ˆ์ œ

๋‹ค์Œ ์ฝ”๋“œ๋Š” ๋‚จ๋…€ ๋‘ ์ง‘๋‹จ ๊ฐ„ ํŒŒ์ด์ฌ ์‹œํ—˜์˜ ํ‰๊ท  ์ฐจ์ด ๊ฒ€์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋‚จ๋…€์˜ ์‹œํ—˜ ํ‰๊ท ์ด ์šฐ์—ฐํžˆ ๊ฐ™์€ ํ™•๋ฅ ์€ ์–ผ๋งˆ์ธ์ง€๋ฅผ ์•Œ์•„ ๋ณธ๋‹ค.
๊ฐ€์„ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

๊ท€๋ฌด : ๋‘ ์ง‘๋‹จ ๊ฐ„ ํŒŒ์ด์ฌ ์‹œํ—˜์˜ ํ‰๊ท ์— ์ฐจ์ด๊ฐ€ ์—†๋‹ค.
๋Œ€๋ฆฝ : ๋‘ ์ง‘๋‹จ ๊ฐ„ ํŒŒ์ด์ฌ ์‹œํ—˜์˜ ํ‰๊ท ์— ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

male = [75,85, 100, 72.5, 86.5]
female = [63.2, 76, 52, 100, 70]
print(np.mean(male), np.mean(female))  # ๋‚จ๋…€ ํ‰๊ท 

two_sample = stats.ttest_ind(male, female, equal_var=True, alternative='two-sided')
print(two_sample)   # TtestResult(statistic=1.233193127514512, pvalue=0.2525076844853278, df=8.0)

# ์ฐธ๊ณ  : Effect-size(ํšจ๊ณผ ํฌ๊ธฐ) - ๋‘ ์ง‘๋‹จ ํ‰๊ท  ์ฐจ์ด๋ฅผ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์„ธ๋“ฑ๊ธ‰์œผ๋กœ ๋ถ„๋ฆฌ(๋ฌผ๋ฆฌ์ )ํ•ด ํ‘œํ˜„
# ํšจ๊ณผ ํฌ๊ธฐ(Cohen's d) = ๋‘ ํ‘œ๋ณธ ์ง‘๋‹จ์˜ ํ‰๊ท  ์ฐจ์ด / ์ถ”์ •๋œ ํ‘œ์ค€ํŽธ์ฐจ
imsi = male + female
print(imsi) 
print((np.mean(male) - np.mean(female)) / np.std(imsi))  # 0.799์ด๋ฏ€๋กœ ํšจ๊ณผํฌ๊ธฐ๊ฐ€ ์ปค์„œ ๋‘ ๊ทธ๋ฃน์˜ ํ‰๊ท ์— ์ฐจ์ด๊ฐ€ ํฌ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

ttest_indํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด p๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.
์ด ๋ฌธ์ œ์—์„œ๋Š” pvalue๊ฐ€ 0.252์œผ๋กœ 0.05๋ณด๋‹ค ํฌ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฏ€๋กœ ๊ท€๋ฌด๊ฐ€์„ค์„ ์ฑ„ํƒํ•œ๋‹ค. ๋– ๋ผ์„œ, ๋‘ ์ง‘๋‹จ ๊ฐ„ ํŒŒ์ด์ฌ ์‹œํ—˜์˜ ํ‰๊ท ์— ์ฐจ์ด๊ฐ€ ์—†๋‹ค.
effect-size๋Š” ์ฐธ๊ณ ์šฉ์œผ๋กœ ์ž‘์„ฑํ–ˆ๋‹ค.

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

Paired Smple t-test ๋ฐ˜๋ณต ์ธก์ •๋œ ์ƒ˜ํ”Œ์˜ ๋ณ€ํ™”๋Ÿ‰์— ์œ ์˜๋ฏธํ•œ ์ฐจ์ด๋ฅผ ์žˆ๋Š”์ง€ ๊ฒ€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
๊ฐ™์€ ๊ทธ๋ฃน๋‚ด์— ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์กฐ๊ฑด์—์„œ ์ˆ˜์ง‘๋œ ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ์ฐจ์ด๋ฅผ ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ฃผ๋กœ ์ „ํ›„ ๋‘ ์‹œ์ ์—์„œ ์ธก์ •๋œ ์ˆ˜์น˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ฐจ์ด๋ฅผ ๊ฒ€์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

์ด ๊ฒ€์ •์€ ๋‘ ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ ์„ธํŠธ ๊ฐ„์˜ ํ‰๊ท  ์ฐจ์ด๊ฐ€ ํ†ต๊ณ„์ ์œผ๋กœ ์œ ์˜๋ฏธํ•œ์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ "์ „" ์กฐ๊ฑด๊ณผ "ํ›„" ์กฐ๊ฑด์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์Œ์„ ์ด๋ฃจ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋Œ€์‘์ธ ๋‘ ์ง‘๋‹จ์˜ ํ‰๊ท  ๋น„๊ต๋Š” ๋™์ผํ•œ ๊ด€์ฐฐ ๋Œ€์ƒ์œผ๋กœ๋ถ€ํ„ฐ ์ฒ˜๋ฆฌ ์ด์ „์˜ ๊ด€์ฐฐ๊ณผ ์ดํ›„์˜ ๊ด€์ฐฐ์„ ๋น„๊ตํ•˜์—ฌ ์˜ํ–ฅ์„ ๋ฏธ์นœ ์ •๋„๋ฅผ ๋ฐํžˆ๋Š”๋ฐ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋™์ผํ•œ ํ”ผํ—˜์ž๋‚˜ ๋™์ผํ•œ ์‹คํ—˜ ๋‹จ์œ„์— ๋Œ€ํ•œ ์ „ํ›„ ์กฐ๊ฑด์˜ ์ธก์ •๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ์— ์ด ๊ฒ€์ •์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ”Ž ์ฝ”๋“œ ์˜ˆ์ œ

๋‹ค์Œ์€ "6๊ฐœ์›”๊ธฐ๊ฐ„๋™์•ˆ ์ดˆ์ฝ”ํŒŒ์ด๋ฅผ ๋จน๊ธฐ ์ „ํ›„์˜ ๋ชธ๋ฌด๊ฒŒ๊ฐ€ ๊ฐ™์€๊ฐ€?"์— ๋Œ€ํ•œ ๊ฒ€์ •์„ ํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค.

๊ฐ€์„ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

๊ท€๋ฌด : ๋ณต๋ถ€ ์ˆ˜์ˆ  ์ „ ๋ชธ๋ฌด๊ฒŒ์™€ ๋ณต๋ถ€ ์ˆ˜์ˆ  ํ›„ ๋ชธ๋ฌด๊ฒŒ ๋ณ€ํ™” ์ฐจ์ด๊ฐ€ ์—†๋‹ค.
๋Œ€๋ฆฝ : ๋ณต๋ถ€ ์ˆ˜์ˆ  ์ „ ๋ชธ๋ฌด๊ฒŒ์™€ ๋ณต๋ถ€ ์ˆ˜์ˆ  ํ›„ ๋ชธ๋ฌด๊ฒŒ ๋ณ€ํ™” ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

from scipy import stats
import pandas as pd
import numpy as np 
import matplotlib.pyplot as plt

baseline = [67.2, 67.4, 71.5, 77.6, 86.0, 89.1, 59.5, 81.9, 105.5]
follow_up = [62.4, 64.6, 70.4, 62.6, 80.1, 73.2, 58.2, 71.0, 101.0]

print(np.mean(baseline))
print(np.mean(follow_up))

plt.bar(np.arange(2), [np.mean(baseline), np.mean(follow_up)])
plt.show()

pair_sample = stats.ttest_rel(baseline, follow_up)
print('\nt-value : %.5f, p-value : %.5f'%pair_sample) 

ttest_relํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด p๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.
์ด ๋ฌธ์ œ์—์„œ ๊ตฌํ•œ p-value๋Š” 0.0063์œผ๋กœ 0.05 ์ž‘๊ธฐ ๋•Œ๋ฌธ์— ๊ท€๋ฌด๊ฐ€์„ค ๊ธฐ๊ฐํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ๋ณต๋ถ€ ์ˆ˜์ˆ  ์ „ ๋ชธ๋ฌด๊ฒŒ์™€ ๋ณต๋ถ€ ์ˆ˜์ˆ  ํ›„ ๋ชธ๋ฌด๊ฒŒ ๋ณ€ํ™” ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

์ •๊ทœ์„ฑ, ๋“ฑ๋ถ„์‚ฐ์„ฑ ํ™•์ธ

t-๊ฒ€์ •์„ ์ˆ˜ํ–‰ํ•  ๋•Œ, ์ •๊ทœ์„ฑ๊ณผ ๋“ฑ๋ถ„์‚ฐ์„ฑ์˜ ๊ฐ€์ •์ด ๋งŒ์กฑ๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ์—๋Š” ๊ฒฐ๊ณผ์˜ ํ•ด์„์ด๋‚˜ ๊ฒ€์ •์˜ ์‹ ๋ขฐ๋„์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋‹ค.
์ผ๋ฐ˜์ ์œผ๋กœ t-๊ฒ€์ •์€ ์ •๊ทœ์„ฑ๊ณผ ๋“ฑ๋ถ„์‚ฐ์„ฑ์„ ๋งŒ์กฑํ•˜๋Š” ๊ฒƒ์ด ๊ธฐ๋ณธ ์ „์ œ๋กœ ๊ฐ„์ฃผ๋œ๋‹ค. ์ด๋Š” t-๊ฒ€์ •์ด ์ •๊ทœ ๋ถ„ํฌ๋ฅผ ๊ฐ€์ •ํ•˜๊ณ , ๋‘ ๊ทธ๋ฃน์˜ ๋ถ„์‚ฐ์ด ๋™์ผํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋Š” ๋“ฑ๋ถ„์‚ฐ์„ฑ์˜ ๊ฐ€์ •์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. t-๊ฒ€์ •์€ ํ‘œ๋ณธ ํฌ๊ธฐ๊ฐ€ ํฌ๋ฉด ์ค‘์‹ฌ ๊ทนํ•œ ์ •๋ฆฌ์— ์˜ํ•ด ์ •๊ทœ์„ฑ ๊ฐ€์ •์ด ์ƒ๋Œ€์ ์œผ๋กœ ๋œ ์ค‘์š”ํ•ด์ง€์ง€๋งŒ, ์ž‘์€ ํ‘œ๋ณธ ํฌ๊ธฐ์—์„œ๋Š” ์ •๊ทœ์„ฑ๊ณผ ๋“ฑ๋ถ„์‚ฐ์„ฑ์˜ ๊ฐ€์ •์ด ์ค‘์š”ํ•˜๊ฒŒ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

1. ์ •๊ทœ์„ฑ์„ ๋งŒ์กฑํ•˜์ง€ ์•Š์„ ๋•Œ

  • ๋งŒ์•ฝ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๊ทœ์„ฑ ๊ฐ€์ •์„ ๋งŒ์กฑํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ, t-๊ฒ€์ •์€ ๋น„๋ชจ์ˆ˜์ ์ธ ๋ฐฉ๋ฒ•์„ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค. ๋น„๋ชจ์ˆ˜์ ์ธ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ๋Š” Wilcoxon signed-rank test (Paired Sample t-test์˜ ๋น„๋ชจ์ˆ˜์  ๋ฒ„์ „)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

2. ๋“ฑ๋ถ„์‚ฐ์„ฑ์„ ๋งŒ์กฑํ•˜์ง€ ์•Š์„ ๋•Œ

  • ๋“ฑ๋ถ„์‚ฐ์„ฑ ๊ฐ€์ •์ด ๋งŒ์กฑ๋˜์ง€ ์•Š์„ ๋•Œ๋Š” Welch's t-test๋ฅผ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ๋‹ค. Welch's t-test๋Š” ๋“ฑ๋ถ„์‚ฐ์„ฑ ๊ฐ€์ •์ด ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ๋‘ ์ง‘๋‹จ ๊ฐ„์˜ ํ‰๊ท  ์ฐจ์ด๋ฅผ ๋น„๊ตํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.
  • ๋˜๋Š” Mann-Whitney U test(Independent Sample t-test์˜ ๋น„๋ชจ์ˆ˜์  ๋ฒ„์ „)๋ฅผ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ๋‹ค.

์ •๊ทœ์„ฑ๊ณผ ๋“ฑ๋ถ„์‚ฐ์„ฑ์ด ์ค‘์š”ํ•œ ์ด์œ ๋Š” t-๊ฒ€์ •์ด ์ด๋Ÿฌํ•œ ๊ฐ€์ •์„ ์ „์ œ๋กœ ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด ๊ฐ€์ •์ด ๊นจ์งˆ ๊ฒฝ์šฐ, ๊ฒฐ๊ณผ์˜ ์‹ ๋ขฐ๋„๊ฐ€ ์ €ํ•˜๋  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ, ํŠนํžˆ ํ‘œ๋ณธ์˜ ํฌ๊ธฐ๊ฐ€ ํฌ๋ฉด ์ค‘์‹ฌ๊ทนํ•œ์ •๋ฆฌ์— ์˜ํ•ด ์ •๊ทœ์„ฑ ๊ฐ€์ •์ด ์ƒ๋Œ€์ ์œผ๋กœ ๋œ ์ค‘์š”ํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ƒํ™ฉ๊ณผ ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ํ†ต๊ณ„์  ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

๐Ÿ”Ž ์ฝ”๋“œ ์˜ˆ์ œ

from scipy import stats
import pandas as pd
import numpy as np 
import seaborn as sns 

print('\n์ •๊ทœ์„ฑ ํ™•์ธ') 
print(stats.shapiro(score1).pvalue) # 0.36798644065856934 > 0.05์ด๋ฏ€๋กœ ์ •๊ทœ์„ฑ ๋งŒ์กฑ
print(stats.shapiro(score2).pvalue) # 0.6714232563972473 > 0.05์ด๋ฏ€๋กœ ์ •๊ทœ์„ฑ ๋งŒ์กฑ

print('\n๋“ฑ๋ถ„์‚ฐ์„ฑ ํ™•์ธ') 
print(stats.levene(score1, score2).pvalue) # ๋ชจ์ˆ˜ ๊ฒ€์ •์ผ ๋•Œ # 0.4568427112977609 > 0.05
print(stats.fligner(score1, score2).pvalue) # ๋ชจ์ˆ˜ # 0.44323735267062647 > 0.05
print(stats.bartlett(score1, score2).pvalue) # ๋น„๋ชจ์ˆ˜ ๊ฒ€์ •์ผ ๋•Œ  # 0.26789717886602216 > 0.05
# levene ๊ฐ€์žฅ ๋งŽ์ด ์”€ ์„ธ ๊ฐ’ ๋‹ค 0.05๋ณด๋‹ค ํฌ๋ฏ€๋กœ ๋“ฑ๋ถ„์ƒ์„ฑ์„ ๋งŒ์กฑํ•œ๋‹ค.

result = stats.ttest_ind(score1, score2)
print('\nt-value : %.5f, p-value : %.5f'%result) # t-value : -0.19649, p-value : 0.84505
print(np.mean(score1), np.mean(score2)) # 5.199999999999999 5.246666666666667
# ํŒ์ • : p-value -> 0.84505 > 0.05 ๊ท€๋ฌด๊ฐ€์„ค ์ฑ„ํƒ. ๋”ฐ๋ผ์„œ, ๋‘ ๊ฐ€์ง€ ๊ต์œก๋ฐฉ๋ฒ•์— ๋”ฐ๋ฅธ ํ‰๊ท ์‹œํ—˜ ์ ์ˆ˜์— ์ฐจ์ด๊ฐ€ ์—†๋‹ค.

print('\n๋“ฑ๋ถ„์‚ฐ์„ฑ์„ ๋งŒ์กฑํ•œ ๊ฒฝ์šฐ : ',stats.ttest_ind(score1, score2).pvalue)
print('๋“ฑ๋ถ„์‚ฐ์„ฑ์„ ๋งŒ์กฑํ•œ ๊ฒฝ์šฐ : ',stats.ttest_ind(score1, score2, equal_var=True).pvalue)
print('๋“ฑ๋ถ„์‚ฐ์„ฑ์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ : ',stats.ttest_ind(score1, score2, equal_var=False).pvalue)
# ๋“ฑ๋ถ„์‚ฐ์„ฑ์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ welchi test ๊ฐ€๋Šฅ
print()
print('์ •๊ทœ์„ฑ์„ ๋งŒ์กฑํ•  ๊ฒฝ์šฐ : ',stats.ttest_ind(score1,score2).pvalue)
# print('์ •๊ทœ์„ฑ์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ : ',stats.wilcoxon(score1,score2).pvalue) # ๋‘ ์ง‘๋‹จ์˜ ํฌ๊ธฐ๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ
print('์ •๊ทœ์„ฑ์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ : ',stats.mannwhitneyu(score1,score2).pvalue) # ๋‘ ์ง‘๋‹จ์˜ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ

์ •๊ทœ์„ฑ ํ™•์ธ์„ ํ• ๋•Œ๋Š” shapiro()ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด ํ•จ์ˆ˜ ๋ง๊ณ ๋„ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋“ค๋„ ์žˆ์ง€๋งŒ ์ƒ๋žตํ•˜๊ฒ ๋‹ค.
๋“ฑ๋ถ„์ƒ์„ฑ์„ ํ™•์ธํ•  ๋•Œ ๋ชจ์ˆ˜๊ฒ€์ •์ด๋ผ๋ฉด levene()๊ณผ fligner()๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๋น„๋ชจ์ˆ˜๊ฒ€์ •์ผ๋•Œ๋Š” bartlett()์„ ์‚ฌ์šฉํ•œ๋‹ค.

๋‹ค์Œ์€ ์ •๊ทœ์„ฑ๊ณผ ๋“ฑ๋ถ„์‚ฐ์„ฑ์„ ๋งŒ์กฑํ•  ๋•Œ์™€ ๋ถˆ๋งŒ์กฑํ•  ๋•Œ์— t-๊ฒ€์ •์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ •๋ฆฌํ•œ ํ‘œ์ด๋‹ค.

๋“ฑ๋ถ„์‚ฐ์„ฑ ๋งŒ์กฑ๋“ฑ๋ถ„์‚ฐ์„ฑ ๋งŒ์กฑ x
ttest_ind(..,equal_var=True)ttest_ind(..,equal_var=False) , welchi test

equal_var๋Š” True๊ฐ€ default์ด๋‹ค.


์ •๊ทœ์„ฑ ๋งŒ์กฑ์ •๊ทœ์„ฑ ๋งŒ์กฑ x
ttest_indwilcoxon(๋‘ ์ง‘๋‹จ์˜ ํฌ๊ธฐ ๊ฐ™์€ ๊ฒฝ์šฐ) ,mannwhitneyu(๋‘ ์ง‘๋‹จ์˜ ํฌ๊ธฐ ๋‹ค๋ฅธ ๊ฒฝ์šฐ)






t ๊ฒ€์ • ์ •์˜ : (๊ต์œกํ‰๊ฐ€์šฉ์–ด์‚ฌ์ „, 2004, ํ•™์ง€์‚ฌ)
์–‘์ธก๊ฒ€์ •,๋‹จ์ธก๊ฒ€์ • ์ด๋ฏธ์ง€ : https://dbrang.tistory.com/1407
t-๊ฒ€์ • ์ข…๋ฅ˜ ์ด๋ฏธ์ง€ : https://sysiphe0.tistory.com/5

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด