f_
frhyme.code
•python-libs•โฑ ์•ฝ 5๋ถ„ ์†Œ์š”

Fitting Statistical Models to Data with Python - WEEK 3 - part 3

Multilevel and marginal modeling, a case study with the NHANES data

  • ๋ฐ์ดํ„ฐ๋ผ๋Š” ๊ฒƒ์€, ์‚ฌ์‹ค ์—ฌ๋Ÿฌ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์„ ํ˜•์ ์ธ ๊ด€๊ณ„๋งŒ ๊ฐ€์ง€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, multi-level๋กœ ๊ตฌ์„ฑ๋˜์–ด, a ~ b, b ~ c์˜ ํ˜•ํƒœ๋กœ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด์ฃ . ์ด๋Ÿฌํ•œ ํ˜•ํƒœ๋กœ ๋ชจ๋ธ๋งํ•˜๋Š” ๊ฒƒ์ด ๋ณดํ†ต multi-level modeling์ž…๋‹ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ , ๋ณดํ†ต ์ด์ฒ˜๋Ÿผ ์„œ๋กœ ๋‚ด๋ถ€์ ์ธ ๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์€ ๊ทธ ๋ฐ์ดํ„ฐ๊ฐ€ ํŠน์ •ํ•œ class ํ˜น์€ cluster์— ํฌํ•จ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด์ฃ . ๋ฌผ๋ก , ์ž˜ ์„ค๊ณ„๋œ ์‹คํ—˜์—์„œ๋Š” ํƒ€๊ฒŸ ๊ทธ๋ฃน์— ๋Œ€ํ•ด์„œ ํ”ผ์‹คํ—˜์ž๋ฅผ ๋ฌด์ž‘์œ„๋กœ ์„ ์ •ํ•˜์—ฌ, ์„ ์ •๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ํƒ€๊ฒŸ ๊ทธ๋ฃน์„ ์ •ํ™•ํžˆ ๋Œ€ํ‘œํ•  ์ˆ˜ ์žˆ๋„๋ก ์กฐ์ ˆํ•˜์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„์˜ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ถ€๋ถ„์ด ์ถฉ์‹คํ•˜๊ฒŒ ๋ฐ˜์˜๋˜์–ด ์žˆ๋‹ค๊ณ  ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ ๋ณธ ์ฑ•ํ„ฐ์—์„œ๋Š” NHANES์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ฐ˜์˜ํ•˜์—ฌ ๋ชจ๋ธ์„ ์ˆ˜๋ฆฝํ•œ๋‹ค. cluster๋Š” ๋ณดํ†ต ํ”ผ์‹คํ—˜์ž์˜ ๊ฐœ์ธ์ ์ธ ๋ฐ์ดํ„ฐ(๋‚˜์ด, ์„ฑ๋ณ„ ๋“ฑ)์— ๊ธฐ๋ฐ˜ํ•˜์ง€๋งŒ, ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋“ค์€ ๋ณดํ†ต ๊ฐœ์ธ์ •๋ณด์ด๋ฏ€๋กœ ์ˆจ๊ฒจ์ง„๋‹ค. ๋Œ€์‹  ๋ณธ ๋ฐ์ดํ„ฐ์—์„œ๋Š” MVUs: "masked variance units"๊ฐ€ ์กด์žฌํ•˜๋ฉฐ, ์ด๊ฒƒ์ด ์‹ค์ œ๋กœ ์กด์žฌํ•˜๋Š” cluster๊ฐ€ ๋œ๋‹ค.

Intraclass correlation

  • ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์˜ ๊ด€์ธก(observation)๋“ค๊ฐ„์˜ ์œ ์‚ฌ์„ฑ์€ ๋ณดํ†ต ICC(IntraClass Correlation)์ด๋ผ๋Š” ํ†ต๊ณ„ ๊ฐ’์œผ๋กœ ์ธก์ •๋œ๋‹ค. ๋ณดํ†ต 0๊ณผ 1์˜ ๊ฐ’์„ ๊ฐ€์ง€๋ฉฐ, pearsonโ€™s correlation๊ณผ๋Š” ๊ตฌ๋ณ„๋˜๋Š” ํ˜•ํƒœ๋‹ค.
  • ICC๋Š” ๋‘ ๊ฐ€์ง€์˜ regression technique๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‰๊ฐ€ํ•˜๋Š”๋ฐ, ํ•˜๋‚˜๋Š” GEE๋ฅผ ์ด์šฉํ•œ Marginal regression, ๋‘๋ฒˆ์งธ๋Š” Mixed Linear Model์„ ์‚ฌ์šฉํ•œ Multi-level regression์ด ๋œ๋‹ค.
  • ๋‹ค์Œ๊ณผ ๊ฐ™์ด, ๋‹ค์–‘ํ•œ column์— ๋Œ€ํ•ด์„œ class ๋‚ด ๊ฐ’๋“ค์˜ ๊ด€๋ จ์„ฑ์„ ๋„์ถœํ•ด๋ณธ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
################
# Assess ICC(Intra Class Cluster)
# GEE์— ๊ฐ group์— ๋”ฐ๋ผ 
print("== Assess ICC(IntraClass Cluster")
for col in ["BPXSY1", "RIDAGEYR", "BMXBMI", "smq", "SDMVSTRA"]:
    model = sm.GEE.from_formula(
        formula=f"{col} ~ 1", 
        groups="group",
        cov_struct=sm.cov_struct.Exchangeable(), 
        data=da
    )
    result = model.fit()
    print(f"{col} :: {result.cov_struct.summary()}")
print("=="*20)
  • ํŠนํžˆ, SDMVSTRA๊ฐ€ ๋งค์šฐ ๋†’์€ ICC๊ฐ’์„ ๊ฐ€์ง€๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋‚˜๋จธ์ง€ ๊ฐ’๋“ค๋„, 0.03์ด๋ฉด ๋†’์€ ํŽธ์ด๋ฉฐ, range(-0.002 0.002)์˜ ๋ฐ–์— ์œ„์น˜ํ•  ๊ฒฝ์šฐ, ์–ด๋А ์ •๋„ ๊ด€๋ จ์„ฑ์ด ๋†’๋‹ค, ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ณดํ†ต pearson correlation์—์„œ๋Š” ๊ฐ’์ด 0.03 ์ •๋„์˜ ๊ฐ’์ด๋ฉด ๋ฌด์‹œํ•ด๋„ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, ICC๋Š” ์ด์ •๋„ ๊ฐ’์ด๋ฉด ์ž‘์ง€๋งŒ, ๋ฌด์‹œํ•˜๊ธฐ๋Š” ์–ด๋ ค์šด ๊ฐ’์ด๋œ๋‹ค.
== Assess ICC(IntraClass Cluster
BPXSY1 :: The correlation between two observations in the same cluster is 0.030
RIDAGEYR :: The correlation between two observations in the same cluster is 0.035
BMXBMI :: The correlation between two observations in the same cluster is 0.039
smq :: The correlation between two observations in the same cluster is 0.026
SDMVSTRA :: The correlation between two observations in the same cluster is 0.959

wrap-up

  • ๊ทธ ์™ธ๋กœ๋„ ๋‹ค์–‘ํ•œ ๋‚ด์šฉ๋“ค์ด ์žˆ์—ˆ๋‹ค. ํŠนํžˆ, GLM๊ณผ GEE๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์˜ ์ฐจ์ด์ , GLM์„ ๋ช…์‹œ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ๋‚ด์— ์กด์žฌํ•˜๋Š” dependence structure๋ฅผ ์„ ์–ธํ•ด์•ผ ํ•˜๋Š” ๋ฐ˜๋ฉด, GEE๋Š” ์ˆจ๊ฒจ์ง„ ๊ตฌ์กฐ๋ฅผ ์œ ์ถ”ํ•ด๊ฐ€๋Š” ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜๋ฏ€๋กœ, ๊ทธ ๋ฐ์ดํ„ฐ ๋‚ด์— ์กด์žฌํ•˜๋Š” ๊ด€๊ณ„๋“ค์— ๋Œ€ํ•ด์„œ ๋ช…ํ™•ํ•˜์ง€ ์•Š์„๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹๋‹ค๋Š” ๊ฒƒ. marginal model์ด GEE, multilevel-model์ด Linear Mixed Model์ด๋ผ๋Š” ๊ฒƒ.
  • ๊ทธ์™ธ๋กœ๋„ ๋‹ค์–‘ํ•œ ๋‚ด์šฉ๋“ค์ด ์žˆ์—ˆ์œผ๋‚˜, ์ด์ „์— ๋ฐฐ์› ๋˜ ๋‚ด์šฉ๋“ค๊ณผ ๊ฐœ๋…์ ์œผ๋กœ ํฌ๊ฒŒ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ์šฐ์„  ์ œ์™ธํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๐Ÿ’กRELATED ARTICLES ยท ํ•จ๊ป˜ ์ฝ์œผ๋ฉด ์ข‹์€ ์—ฐ๊ด€ ํฌ์ŠคํŠธ

๊ธ€ ์ฃผ์†Œ๊ฐ€ ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.