๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
1๏ธโƒฃ AI•DS/๐ŸฅŽ Casual inference

[The Brave and True] 6. Grouped and Dummy Regression

by isdawell 2023. 6. 28.
728x90

 

 

๐Ÿ‘€ ์ธ๊ณผ์ถ”๋ก  ๊ฐœ์ธ ๊ณต๋ถ€์šฉ ํฌ์ŠคํŠธ ๊ธ€์ž…๋‹ˆ๋‹ค. ์ถœ์ฒ˜๋Š” ์ฒจ๋ถ€ํ•œ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”!

 

 

 

 

โ‘   ๊ทธ๋ฃนํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ ํšŒ๊ท€ 


 

โ—ฏ  ์ด๋ถ„์‚ฐ์„ฑ 

 

•   ๋ถ„์‚ฐ์ด ๋‚ฎ์€ ์˜์—ญ๊ณผ ๋†’์€ ์˜์—ญ์„ ๋™์‹œ์— ๊ฐ–๋Š” ํ˜„์ƒ, ์ฆ‰ ๋ณ€์ˆ˜์˜ ๋ชจ๋“  ๊ฐ’์—์„œ ๋ถ„์‚ฐ์ด ์ผ์ •ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๋‹ค. 

•   ๋ถ„์‚ฐ์ด ๋‹ฌ๋ผ์ง€๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์ด์œ ๋Š” ๊ทธ๋ฃนํ™”๋œ ๋ฐ์ดํ„ฐ ๋•Œ๋ฌธ์ด๋‹ค. 

 

 

โ—ฏ  smf.ols ์™€ smf.wls ์ฐจ์ด 

 

•  smf.ols : OLS ํšŒ๊ท€๋ชจ๋ธ์„ ๊ตฌ์ถ•ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. 

•  smf.wls : ์ตœ์†Œ์ž์Šน๋ฒ•์˜ ๋ณ€ํ˜•์œผ๋กœ ์ž”์ฐจ์˜ ๊ฐ€์ค‘์น˜๋ฅผ ๊ณ ๋ คํ•ด ๋ชจ๋ธ์„ ์ ํ•ฉ์‹œํ‚จ๋‹ค. ๊ฐ€์ค‘์น˜๋Š” ๊ฐ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ์˜ ์ค‘์š”๋„๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ํŠน์ • ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ์— ๋” ํฐ ๊ฐ€์ค‘์น˜๋ฅผ ๋ถ€์—ฌํ•ด ๋ชจ๋ธ์ด ํ•ด๋‹น ํฌ์ธํŠธ์— ๋” ์ ํ•ฉํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค. ์˜ค์ฐจ์˜ ๋ถ„์‚ฐ์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ๋‚˜ ์ด์ƒ์น˜์— ๋œ ๋ฏผ๊ฐํ•œ ๋ชจ๋ธ์„ ๊ตฌ์ถ•ํ•˜๊ณ ์ž ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค. 

 

 

 

โ—ฏ  ์˜ˆ์ œ 

 

•   lhwage : ๋กœ๊ทธ ์‹œ๊ฐ„๋‹น ์ž„๊ธˆ, educ : ๊ต์œก๊ธฐ๊ฐ„, IQ : ์ง€๋Šฅ 

 

•   ols ์ถ”์ • 

 

model_1 = smf.ols('lhwage ~ educ', data=wage).fit()
model_1.summary().tables[1]

 

 

•   ๊ฐœ๋ณ„ํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ๋Œ€์‹  ์š”์ฒญ์ž๊ฐ€ ๊ต์œก์„ ๋ฐ›์€ ๋ชจ๋“  ์‚ฌ๋žŒ์„ ๊ทธ๋ฃนํ™”ํ•˜๊ณ  ํ‰๊ท ๋กœ๊ทธ ์‹œ๊ฐ„๋‹น ์ž„๊ธˆ๊ณผ ๊ทธ๋ฃน์˜ ๊ฐœ์ธ์ˆ˜๋งŒ ์•Œ๋ ค๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ 10๊ฐœ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋งŒ ์ „๋‹ฌํ•˜๊ฒŒ ๋œ๋‹ค. 

 

wage = pd.read_csv("./data/wage.csv")[["wage", "lhwage", "educ", "IQ"]]
group_wage = (wage
              .assign(count=1)
              .groupby("educ")
              .agg({"lhwage":"mean", "count":"count"})
              .reset_index())

group_wage

 

•   ์„ ํ˜• ํšŒ๊ท€ ๋ชจ๋ธ์— ๊ฐ€์ค‘์น˜๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์œ„์˜ ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ง€๊ณ  smf.wls ๋ฅผ ๋ชจ๋ธ๋งํ•œ๋‹ค. weights ๋ฅผ ์ง€์ •ํ•˜์—ฌ ์†Œ๊ทœ๋ชจ ๊ทธ๋ฃน๋ณด๋‹ค ํ‘œ๋ณธ ํฌ๊ธฐ๊ฐ€ ๋” ํฐ ๊ทธ๋ฃน์„ ๋” ๋งŽ์ด ๊ณ ๋ คํ•˜๋„๋ก ํ•œ๋‹ค. 

 

model_2 = smf.wls('lhwage ~ educ', data=group_wage, weights=group_wage["count"]).fit()
model_2.summary().tables[1]

 

โ†ช ๊ทธ๋ฃนํ™”๋œ ๋ฐ์ดํ„ฐ์ด์ง€๋งŒ, ๊ฐœ๋ณ„ ๋ฐ์ดํ„ฐ๋กœ ์ถ”์ •ํ–ˆ์„ ๋•Œ์™€ ๋ชจ์ˆ˜ ์ถ”์ •์น˜๊ฐ€ ๋งค์šฐ ์œ ์‚ฌํ•˜๋‹ค (์œ„์˜ ์˜ˆ์ œ๋Š” ๋™์ผํ•จ)  โ†ช ๋˜ํ•œ ํ†ต๊ณ„์ ์œผ๋กœ ์œ ์˜๋ฏธํ•œ ๊ณ„์ˆ˜๋ฅผ ์–ป์—ˆ๋Š”๋ฐ, ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜๋Š” ๋” ์ ์ง€๋งŒ, ๊ทธ๋ฃนํ™”๋ฅผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ถ„์‚ฐ์ด ๋งŽ์ด ์ค„์–ด๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

 

•  ๊ทธ๋ฃนํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ค‘์น˜๊ฐ€ ์—†๋Š” ๋ชจ๋ธ๋กœ ์ถ”์ •ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ชจ์ˆ˜ ์ถ”์ •์น˜๊ฐ€ ๋” ์ž‘์•„์ง„๋‹ค. (0.05 → 0.04) 

 

model_3 = smf.ols('lhwage ~ educ', data=group_wage).fit()
model_3.summary().tables[1]

 

•   ์ง‘๊ณ„๋œ ๋ฐ์ดํ„ฐ์—์„œ๋Š” ๊ฐ€์ค‘์น˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๊ฐ€์ค‘ํšŒ๊ท€๋ถ„์„์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํ‰๊ท  ํ†ต๊ณ„๋Ÿ‰์ด ํ•„์š”ํ•˜๋‹ค. ๊ทธ๋ฃนํ™” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ ๊ฐ€์ค‘ ํšŒ๊ท€๋ถ„์„ ๊ฒฐ๊ณผ๋Š” ๊ทธ๋ฃนํ™”๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ์˜ ํšŒ๊ท€๋ถ„์„๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ๋‚˜์˜จ๋‹ค. 

 

 

•   ๊ทธ๋ฃนํ™”๋œ ๋ฐ์ดํ„ฐ์—์„œ ์ถ”๊ฐ€ ๊ณต๋ณ€๋Ÿ‰ (IQ) ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์ œ

 

group_wage = (wage
              .assign(count=1)
              .groupby("educ")
              .agg({"lhwage":"mean", "IQ":"mean", "count":"count"})
              .reset_index())

model_4 = smf.wls('lhwage ~ educ + IQ', data=group_wage, weights=group_wage["count"]).fit()
print("Number of observations:", model_4.nobs)
model_4.summary().tables[1]

 

โ†ช ํ‰๊ท ๊ณผ ์นด์šดํŠธ๋ฅผ ๊ตฌํ•˜๊ณ  ํ‰๊ท ์œผ๋กœ ํšŒ๊ท€ํ•˜๊ณ  ์นด์šดํŠธ๋ฅผ ๊ฐ€์ค‘์น˜๋กœ ์‚ฌ์šฉํ•œ๋‹ค. 

 

 

 

 

 

โ‘ก  Regression for Dummies 


 

โ—ฏ  ๋”๋ฏธ๋ณ€์ˆ˜ 

 

•  ๋”๋ฏธ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ํšŒ๊ท€๊ณ„์ˆ˜๋Š” ํšŒ๊ท€์„ ์˜ ์ ˆํŽธ์— ๋Œ€ํ•œ ์ฆ๋ถ„ ๋˜๋Š” treated ๋œ ๊ฒƒ๊ณผ ๋˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ„์˜ ํ‰๊ท  ์ฐจ์ด์ด๋‹ค. ๋”๋ฏธ๊ฐ€ 1์ด๋ฉด ์˜ˆ์ธก๊ฐ’์€ ์ ˆํŽธ์— ๋”๋ฏธ ๊ณ„์ˆ˜๋ฅผ ๋”ํ•œ ๊ฐ’์ด๋‹ค. 

 

•  ์ถ”๊ฐ€๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋”๋ฏธ๊ณ„์ˆ˜๊ฐ€ ํ‰๊ท ์˜ ์กฐ๊ฑด๋ถ€ ์ฐจ์ด๊ฐ€ ๋œ๋‹ค. ๊ฐ€๋ น ์œ„์˜ ์˜ˆ์ œ์—์„œ, 12๋…„์ด์ƒ์˜ ๊ต์œก์„ ๋ฐ›์€ ์—ฌ๋ถ€๋ฅผ ๋”๋ฏธ๋ณ€์ˆ˜๋กœ ์„ค์ •ํ•˜๊ณ , IQ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค๊ณ  ํ•˜๋ฉด, ๋”๋ฏธ๊ณ„์ˆ˜๋Š” IQ ๋ฅผ ๊ณ ์ •ํ•œ ์ƒํƒœ์—์„œ 12๋…„์ด์ƒ์˜ ๊ต์œก์„ ๋ฐ›์„ ๋•Œ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์ž„๊ธˆ ์ฆ๊ฐ€๋ฅผ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ๋ ค์ค€๋‹ค. 

 

 

 

 

โ—ฏ  ๊ตํ˜ธ์ž‘์šฉ์ด ์žˆ๋Š” ๊ฒฝ์šฐ 

 

 

โ†ช  β0 : ์ฒ˜์น˜๊ฐ€ 0์ด๊ณ  IQ๊ฐ€ 0์ ์ผ ๋•Œ ์˜ˆ์ƒ๋˜๋Š” ์ž„๊ธˆ (IQ ๊ฐ€ 0์ธ ๊ฒฝ์šฐ๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๊ทธ๋‹ค์ง€ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค) 

โ†ช  β1 : ์ฒ˜์น˜๊ฐ€ 1์ด๊ณ  IQ ๊ฐ€ 0์ผ ๋•Œ ์˜ˆ์ƒ๋˜๋Š” ์ž„๊ธˆ ์ธ์ƒ ํญ (์ด ๋˜ํ•œ IQ ๊ฐ€ 0์ธ ๊ฒฝ์šฐ๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์— ํฅ๋ฏธ๋กœ์šด ์˜๋ฏธ๊ฐ€ ์—†๋‹ค) 

โ†ช  β2 : IQ ๊ฐ€ ์ฒ˜์น˜๋ฐ›์ง€ ์•Š์€ ์‚ฌ๋žŒ๋“ค์˜ ์ž„๊ธˆ์„ ์–ผ๋งˆ๋‚˜ ์ฆ๊ฐ€์‹œํ‚ค๋Š”์ง€ ์•Œ๋ ค์ค€๋‹ค. ๊ฐ€๋ น ๊ฐ’์ด 0.11 ์ด๋ฉด, IQ ์ ์ˆ˜ 1์ ๋‹น ๊ต์œก์„ 12๋…„ ์ด์ƒ ๋ฐ›์ง€ ๋ชปํ•œ ์‚ฌ๋žŒ์€ ์‹œ๊ฐ„ ๋‹น 11์„ผํ„ฐ๋ฅผ ๋” ์–ป์„ ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. 

โ†ช  β3 : ๊ต์œก์„ 12๋…„ ์ด์ƒ ๋ฐ›์„ ๋•Œ, IQ ์ฆ๊ฐ€์— ๋”ฐ๋ฅธ ์ž„๊ธˆ ์ฆ๊ฐ€๋ฅผ ์•Œ๋ ค์ค€๋‹ค. ๊ฐ€๋ น ๊ฐ’์ด 0.024 ๋ผ๊ณ  ํ•˜๋ฉด, IQ ๊ฐ€ 1์  ์˜ค๋ฅผ ๋•Œ๋งˆ๋‹ค ๊ต์œก์„ 12๋…„ ์ด์ƒ ๋ฐ›์€ ์‚ฌ๋žŒ์ด๋ผ๊ณ  ํ•˜๋ฉด ์‹œ๊ฐ„ ๋‹น ์ž„๊ธˆ์„ 2์„ผํŠธ ๋” ๋ฐ›์„ ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

โ—ฏ  ๋ชจ๋ธ์˜ ๋ชจ๋“  ๋ณ€์ˆ˜๊ฐ€ ๋”๋ฏธ์ธ ๊ฒฝ์šฐ 

 

•  IQ ๋ฅผ 4๊ฐœ์˜ ๋ฒ”์ฃผ๋กœ ๋ถ„๋ฆฌํ•˜๊ณ  ๊ต์œก๊ธฐ๊ฐ„์„ ๋ฒ”์ฃผํ˜• ๋ณ€์ˆ˜๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค. ๊ฐ ๊ต์œก์—ฐ๋„๊ฐ€ ๊ณ ์œ ํ•œ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋„๋ก ํ—ˆ์šฉํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ต์œก์˜ ํšจ๊ณผ๊ฐ€ ๋” ์ด์ƒ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹ˆ๊ฒŒ ํ•˜์—ฌ ์œ ์—ฐ์„ฑ์„ ์–ป์„ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ๋ชจ๋ธ์€ ๋‹จ์ˆœํžˆ ๊ฐ ๊ต์œก ์—ฐ๋„๋ณ„ ํ‰๊ท  ์ž„๊ธˆ์„ ๊ณ„์‚ฐํ•œ๋‹ค. 

 

model_dummy = smf.ols('hwage ~ C(educ)', data=wage).fit()
model_dummy.summary().tables[1]

 

โ†ช ์œ„์™€๊ฐ™์ด ์ถ”์ •ํ•˜๋Š” ๊ฒฝ์šฐ, ๊ฐ€๋ น ๊ต์œก์—ฐ๋„ 9๋…„๊ณผ 17๋…„ ๊ฐœ์ธ ๊ฐ„ ์ฐจ์ด์— ๋Œ€ํ•ด ๊ณ„์‚ฐํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

 

•  ๋ชจ๋ธ์— ๋” ๋งŽ์€ ๋”๋ฏธ ๊ณต๋ณ€๋Ÿ‰์„ ํฌํ•จํ•˜๋ฉด ๊ต์œก์— ๋Œ€ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๊ฐ ๋”๋ฏธ ๊ทธ๋ฃน์— ๋Œ€ํ•œ ํšจ๊ณผ์˜ ๊ฐ€์ค‘ํ‰๊ท ์ด ๋œ๋‹ค. 

 

 

 

 

๐Ÿ‘€ ํ•ต์‹ฌ์ •๋ฆฌ 

 

•  ์„ ํ˜•๋ชจํ˜•์„ ์ถ”์ •ํ•  ๋•Œ ํ‘œ๋ณธ ํฌ๊ธฐ๊ฐ€ ํฌ๊ณ  ๋ถ„์‚ฐ์ด ๋‚ฎ์€ ํ‘œ๋ณธ์— ๋” ๋งŽ์€ ๊ฐ€์ค‘์น˜๋ฅผ ๋ถ€์—ฌํ•ด์•ผ ํ•œ๋‹ค. 

 

 

728x90

๋Œ“๊ธ€