๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
TIL๐Ÿ”ฅ/๋ฉ‹์Ÿ์ด์‚ฌ์ž์ฒ˜๋Ÿผ_AI School 5๊ธฐ

[๋ฉ‹์‚ฌ] AI SCHOOL 5๊ธฐ_ Day 17

by hk713 2022. 3. 30.

๊ธฐ์ˆ ํ†ต๊ณ„๋ถ„์„

DataFrame์˜ ๊ธฐ์ˆ ํ†ต๊ณ„๋Ÿ‰ ํ•จ์ˆ˜๋‹ค.

# ํ™”์žฅํ’ˆ ๊ตฌ๋งค ๊ด€๋ จ ์ •๋ณด๊ฐ€ ๋“ค์–ด์žˆ๋Š” csvํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์™€ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์œผ๋กœ ๋งŒ๋“ค์–ด์คŒ
df = pd.read_csv('cosmetices_csv')

# '1ํšŒ ํ‰๊ท  ๊ตฌ๋งค ๋น„์šฉ' ๊ธฐ์ค€
# ์ตœ๋Œ“๊ฐ’
df['amount'].max()

# ์ตœ์†Ÿ๊ฐ’
df['amount'].min()

# ํ•ฉ๊ณ„
df['amount'].sum()

# ํ‰๊ท ๊ฐ’
df['amount'].mean()

# ๋ถ„์‚ฐ(variance)
df['amount'].var()

# ํ‘œ์ค€ํŽธ์ฐจ(standard deviation)
df['amount'].std()

๊ธฐ์ˆ ํ†ต๊ณ„๋ฅผ ํ•  ๋•Œ๋Š” ์™œ๋„์™€ ์ฒจ๋„๋ฅผ ์ฒจ๋ถ€ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

์™œ๋„ (Skewness) : ๋ถ„ํฌ๊ฐ€ ์ขŒ์šฐ๋กœ ์น˜์šฐ์ณ์ง„ ์ •๋„!  0์— ๊ฐ€๊นŒ์šธ์ˆ˜๋ก ์ •๊ทœ๋ถ„ํฌ๋ผ๊ณ  ๊ฐ€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค(์ ˆ๋Œ€๊ฐ’ ๊ธฐ์ค€ 3 ๋ฏธ์ดˆ๊ณผ)

์ถœ์ฒ˜_ https://www.oppadu.com/%EC%97%91%EC%85%80-skew-%ED%95%A8%EC%88%98/

์ฒจ๋„ (Kurtosis) : ๋ถ„ํฌ๊ฐ€ ๋พฐ์กฑํ•œ ์ •๋„!  1์— ๊ฐ€๊นŒ์šธ์ˆ˜๋ก ์ •๊ทœ๋ถ„ํฌ๋ผ๊ณ  ๊ฐ€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค(์ ˆ๋Œ€๊ฐ’ ๊ธฐ์ค€ 8 ๋˜๋Š” 10 ๋ฏธ์ดˆ๊ณผ)

์ถœ์ฒ˜_ https://blog.naver.com/moses3650/220880815585

 

Outlier(์ด์ƒ์น˜) ํƒ์ง€ 

Box plot

Box plot(๋ฐ•์Šค ํ”Œ๋กฏ)์€ ์ˆ˜์น˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ํ•˜๋‚˜์˜ ๋ฐฉ์‹์ด๋‹ค.

์ตœ์†Œ๊ฐ’(min), ์ œ 1๋ถ„์œ„ ์ˆ˜(Q1), ์ œ 2๋ถ„์œ„ ์ˆ˜ ๋˜๋Š” ์ค‘์œ„์ˆ˜(Q2), ์ œ 3๋ถ„์œ„ ์ˆ˜(Q3), ์ตœ๋Œ€๊ฐ’์„ ์‚ฌ์šฉํ•ด ๊ทธ๋ ค์ง„๋‹ค.

df.boxplot(column='์ปฌ๋Ÿผ๋ช…')

์ถœ์ฒ˜_ https://www.isixsigma.com/dictionary/box-plot/

  • ์ƒํ•œ์น˜: ๋ฐ”๋‹ฅ๋ถ€ํ„ฐ 75% ์ง€์ ์˜ ๊ฐ’(Q3) + IQR์˜ 1.5๋ฐฐ
  • ํ•˜ํ•œ์น˜: ๋ฐ”๋‹ฅ๋ถ€ํ„ฐ 25% ์ง€์ ์˜ ๊ฐ’(Q1) - IQR์˜ 1.5๋ฐฐ
  • ์ด ๊ธฐ์ค€์„ ๋„˜๊ธฐ๋ฉด Outlier๋กœ ํŒ๋‹จ ๊ฐ€๋Šฅ

 

๊ต์ฐจ๋ถ„์„

๊ต์ฐจ๋ถ„์„(cross-tabulation analysis)์€ ๋‘ ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜ ๊ฐ„์˜ ์—ฐ๊ด€์„ฑ์— ์œ ์˜ํ•œ ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๊ต์ฐจํ‘œ๋ฅผ ๋งŒ๋“ค์–ด ๊ด€๊ณ„๋ฅผ ํ™•์ธํ•˜๋Š” ๋ถ„์„ ๋ฐฉ๋ฒ•์ด๋ฉฐ, ์นด์ด์ œ๊ณฑ ๊ฒ€์ •(Chi-square test)์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค. 

  • ๋Œ€๋ฆฝ๊ฐ€์„ค(Alternative hypothesis): ์œ ์˜๋ฏธํ•˜๋‹ค
  • ๊ท€๋ฌด๊ฐ€์„ค(Null hypothesis): ์œ ์˜๋ฏธํ•˜์ง€์•Š๋‹ค, ์ „ํ˜€ ๊ด€๊ณ„ ์—†๋‹ค
import scipy as sp
from scipy import stats 

stats.chisquare(df.propensity, df.skin)

์œ„ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด p-value ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

์—ฌ๊ธฐ์„œ p-value (probability value)๋Š” ํ™•๋ฅ ๊ฐ’์ด๋‹ค. ๊ท€๋ฌด๊ฐ€์„ค์ด ์ฐธ์ด๋ผ๋Š” ์ „์ œ ํ•˜์—(์กฐ๊ฑด), "๊ด€์ฐฐ์ด ์™„๋ฃŒ๋œ ๊ฐ’ ํ˜น์€ ๊ทธ๋ณด๋‹ค ๋” ๊ทน๋‹จ์ ์ธ ๊ฐ’"์ด ํ‘œ๋ณธ(์ƒ˜ํ”Œ๋ฐ์ดํ„ฐ)์„ ํ†ตํ•ด ๋‚˜ํƒ€๋‚  (์กฐ๊ฑด๋ถ€) ํ™•๋ฅ ์ด๋‹ค. ํ™•๋ฅ ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— p๊ฐ’์ด ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์€ 0๋ถ€ํ„ฐ 1๊นŒ์ง€๋‹ค. 

  • p-value๊ฐ€ 0.05(5%) ๋ฏธ๋งŒ์ผ ๊ฒฝ์šฐ = ๊ท€๋ฌด๊ฐ€์„ค์ด ์ฐธ์ผ ๋•Œ ํ•ด๋‹น ๊ด€์ธก์น˜๊ฐ€ ๋‚˜ํƒ€๋‚  ํ™•๋ฅ ์ด ๋งค์šฐ ๋‚ฎ๋‹ค๊ณ  ํŒ๋‹จํ•˜๋ฉฐ, ๊ท€๋ฌด๊ฐ€์„ค์„ ๊ธฐ๊ฐํ•œ๋‹ค.
  • p-value๊ฐ€ 0.05(5%) ์ด์ƒ์ผ ๊ฒฝ์šฐ = ๊ท€๋ฌด๊ฐ€์„ค์ด ์ฐธ์ผ ๋•Œ ํ•ด๋‹น ๊ด€์ธก์น˜๊ฐ€ ๋‚˜ํƒ€๋‚  ํ™•๋ฅ ์ด ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•˜๋ฉฐ, ๊ท€๋ฌด๊ฐ€์„ค์„ ๊ธฐ๊ฐํ•˜์ง€ ์•Š๋Š”๋‹ค.

** ์ฃผ์˜ํ•  ์ ์€, p-value๊ฐ€ 0.05 ์ดํ•˜๋ผ๋Š” ๊ฒƒ์ด ํ•ญ์ƒ ๋Œ€๋ฆฝ๊ฐ€์„ค์ด ๋งž๋‹ค(์—ฐ๊ตฌ ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ์ด๊ฑฐ๋‚˜ ํšจ๊ณผ๊ฐ€ ์žˆ๋‹ค)๋Š” ๊ฒƒ์„ ๋œปํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์ด๋‹ค.

 

t-test(t ๊ฒ€์ •)

t-๊ฒ€์ •์€ ๊ฐ€์„ค ๊ฒ€์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋‚˜ ๋˜๋Š” ๋‘ ๋ชจ์ง‘๋‹จ์˜ ํ‰๊ท ์„ ํ‰๊ฐ€ํ•˜๋Š” ๋„๊ตฌ๋‹ค.

๋…๋ฆฝํ‘œ๋ณธ t-test (2ํ‘œ๋ณธ t-๊ฒ€์ •)๋Š” ์•Œ ์ˆ˜ ์—†๋Š” ๋‘ ๊ทธ๋ฃน ๋ชจ์ง‘๋‹จ ํ‰๊ท ์ด ๊ฐ™์€์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

stats.ttest_ind(df[df['gender']==1]['satisf_al'], df[df['gender']==2]['satisf_al'])

์œ„ ์ฝ”๋“œ์˜ ์‹คํ–‰๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Ttest_indResult(statistic=-0.494589803056421, pvalue=0.6213329051985961)

pvalue๊ฐ’์ด 0.05์ด์ƒ์ด๋ฏ€๋กœ ๊ท€๋ฌด๊ฐ€์„ค์„ ๊ธฐ๊ฐํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ฆ‰, "์„œ๋กœ ๋‹ค๋ฅธ" ์„ฑ๋ณ„ ๊ฐ„์— ์ „๋ฐ˜์ ์ธ ๋งŒ์กฑ๋„์˜ ํ‰๊ท ๊ฐ’ ์‚ฌ์ด์— ์œ ์˜๋ฏธํ•œ ์ฐจ์ด๊ฐ€ "์—†๋‹ค"๋Š” ๊ฒƒ์ด๋‹ค.

 

๋Œ€์‘ํ‘œ๋ณธ t-test ๋Š” ๋™์ผํ•œ ๋ชจ์ง‘๋‹จ์œผ๋กœ๋ถ€ํ„ฐ ์ถ”์ถœ๋œ ๋‘ ๋ณ€์ˆ˜์˜ ํ‰๊ท ๊ฐ’์„ ๋น„๊ต ๋ถ„์„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

stats.ttest_rel(df["satisf_b"], df["satisf_i"])

์œ„ ์ฝ”๋“œ์˜ ์‹คํ–‰๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Ttest_relResult(statistic=-7.155916401026872, pvalue=9.518854506666398e-12)

pvalue๊ฐ’์ด 0.05๋ฏธ๋งŒ์ด๋ฏ€๋กœ ๊ท€๋ฌด๊ฐ€์„ค์„ ๊ธฐ๊ฐํ•œ๋‹ค.

์ฆ‰, "๋™์ผํ•œ" ๊ณ ๊ฐ ์ง‘๋‹จ์ด ํ‰๊ฐ€ํ•œ ๊ตฌ๋งค ๊ฐ€๊ฒฉ์— ๋Œ€ํ•œ ๋งŒ์กฑ๋„์™€ ๊ตฌ๋งค ๋ฌธ์˜์— ๋Œ€ํ•œ ๋งŒ์กฑ๋„์˜ ํ‰๊ท ๊ฐ’ ์‚ฌ์ด์— ์œ ์˜๋ฏธํ•œ ์ฐจ์ด๊ฐ€ "์žˆ๋‹ค"

 

๋ถ„์‚ฐ๋ถ„์„(ANOVA, Analysis of Variance)

๋ถ„์‚ฐ ๋ถ„์„์€ 3๊ฐœ ์ด์ƒ ๋‹ค์ˆ˜์˜ ์ง‘๋‹จ์„ ๋น„๊ตํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€์„ค๊ฒ€์ • ๋ฐฉ๋ฒ•์ด๋‹ค.

stats.f_oneway(anova1, anova2, anova3)

์œ„ ์ฝ”๋“œ์˜ ์‹คํ–‰๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

F_onewayResult(statistic=4.732129410493065, pvalue=0.009632034309915485)

pvalue๊ฐ’์ด 0.05๋ฏธ๋งŒ์ด๋ฏ€๋กœ ๊ท€๋ฌด๊ฐ€์„ค์„ ๊ธฐ๊ฐํ•œ๋‹ค.

์ฆ‰, "3๊ฐ€์ง€" ๊ตฌ๋งค ๋™๊ธฐ์— ๋”ฐ๋ฅธ ์ „๋ฐ˜์ ์ธ ๋งŒ์กฑ๋„์˜ ํ‰๊ท ๊ฐ’ ์ค‘ ์ ์–ด๋„ ํ•˜๋‚˜๋Š” ์œ ์˜๋ฏธํ•œ ์ฐจ์ด๊ฐ€ "์žˆ๋‹ค"

 

์ƒ๊ด€๊ด€๊ณ„๋ถ„์„(Correlation Analysis)

์ƒ๊ด€๋ถ„์„์€ ๋‘ ๋ณ€์ˆ˜๊ฐ„์— ์–ด๋–ค ์„ ํ˜•์  ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๋Š”์ง€ ๋ถ„์„ํ•˜๋Š” ๊ธฐ๋ฒ•์œผ๋กœ ์ƒ๊ด€๊ณ„์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ์ธก์ •ํ•œ๋‹ค. ์ƒ๊ด€ ๋ถ„์„์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ƒ๊ด€๊ณ„์ˆ˜๋Š” ํ”ผ์–ด์Šจ(Pearson) ์ƒ๊ด€๊ณ„์ˆ˜๋ฉฐ, ์—ฐ์†ํ˜• ๋ณ€์ˆ˜์˜ ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ์ธก์ •ํ•œ๋‹ค.

ํ”ผ์–ด์Šจ ์ƒ๊ด€ ๊ณ„์ˆ˜๋Š” -1์— ๊ฐ€๊นŒ์šธ์ˆ˜๋ก ์Œ์˜ ์ƒ๊ด€๊ด€๊ณ„, 1์— ๊ฐ€๊นŒ์šธ์ˆ˜๋ก ์–‘์˜ ์ƒ๊ด€๊ด€๊ณ„, 0์— ๊ฐ€๊นŒ์šธ์ˆ˜๋ก ์ƒ๊ด€๊ด€๊ณ„๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

์ถœ์ฒ˜_ https://www.sasbigdata.com/entry/stats-correlation-analysis-covariance-pearson-spearman-kendall

๋‹ค์Œ์€ ํ”ผ์–ด์Šจ ์ƒ๊ด€ ๊ณ„์ˆ˜ ํ•ด์„ ๊ธฐ์ค€์ด๋‹ค. (ํ•™๊ณ„๋ณ„๋กœ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค)

์ถœ์ฒ˜_ https://www.semanticscholar.org/paper/User's-guide-to-correlation-coefficients-Ako%C4%9Flu/dd7ceee5b05eb672e850140220f7db44ead3968f/figure/1

 

๋Œ“๊ธ€