獨斷論

Statistical Rethinking 제5장 연습문제 풀이 본문

과학과 기술/R 통계

Statistical Rethinking 제5장 연습문제 풀이

부르칸 2021. 3. 11. 09:00

5E1 풀이

(2)와 (4)가 multiple regression이다.

(3)은 독립변수가 2개이지만 regression parameter β가 1개이므로 multiple regression이 아니다.

 

 

5E2 풀이

yi: Animal disversity

Li: Latitude

Di: Plant diversity

 

Regression model:

yiNormal(μi,σ)

μi=α+βLLi+βDDi

 

 

5E3 풀이

yi: time to PhD degree

Fi: amount of funding

Li: lab size

 

1) Neither amount of funding nor size of laboratory is a good predictor of time to PhD degree.

2개의 선형모델을 만들어 기울기가 0에 가까움을 보인다.

yiNormal(μFi,σF)

μFi=αF+βFFi

 

yiNormal(μLi,σL)

μLi=αL+βLLi

 

즉 위 2개의 모델에서 βLβF가 0에 가까움을 보인다.

 

2) but together these variables are both positively associated with time to degree.

yiNormal(μi,σ)

μi=α+βFFi+βLLi

 

두 개의 독립변수를 넣은 모델에서는 기울기가 0보다 큼을 보인다.

 

 

5E4 풀이

(1), (3), (4), (5)

level이 4개이므로 3개만 이용하여야 한다.

(3)은 index variable을 이용하는 방법과 같다.

 

 

5M1 풀이

x와 y 사이의 Spurious correlation:

x와 y의 데이터가 서로 상관관계를 보이지만 이 둘 사이에는 아무런 인과관계가 성립하지 않고 제3의 변수 z가 x에 영향을 주고 y에 영향을 주어서 x와 y가 상관관계가 있어 보이는 것을 말함.

 

https://dictionary.apa.org/spurious-correlation

 

APA Dictionary of Psychology

 

dictionary.apa.org

화재로 인한 재산피해: y

화재현장의 소방관 수: x

화재의 정도: z

 

y=a+bx로 regression하여 재산 피해를 줄이기 위해 투입되는 소방관을 수를 줄이는 멍청한 짓을 할수가 있다.

실제로는 zy이고 zx인 관계이다.

 

Statistical rethinking의 5M1의 문제 서술과는 약간 다름. spurious correlation이란 실제 상관관계에 대한 설명이고 데이터를 가지고 선형모델을 세웠을때 항상 5M1의 기술과 같이 나오지는 않는다.

 

 

5M2 풀이

비만도(outcome variable): y

가난(masked variable or latent variable):  z

탄수화물 섭취량: x1

단백질 섭취량: x2

선진국 사회는 비만도가 높을수록 탄수화물 섭취가 많고 단백질 섭취가 적다.

이는 가난한 사람들이 값싼 탄수화물을 가장 많이 섭취하고 단백질은 상대적으로 적게 섭취하기때문이다.

 

5M3 풀이

이혼 후에 재혼을 할 가능성이 있으므로 divorce rate가 marriage rate의 원인이 될수 있다.

데이터를 모을때 재혼과 초혼을 구별하여 모았어야 했다.

 

 

5M4

www.worldatlas.com/articles/mormon-population-by-state.html 에서 데이터를 가져올수 있다.

첨부파일:

mormon.csv
0.00MB

 

위 파일을 받아서 R의 작업디렉토리에 저장하고 아래를 실행한다.

rm(list=ls())

library(rethinking)
data(WaffleDivorce)
d = WaffleDivorce
dm = read.csv("mormon.csv", header=TRUE, strip.white=TRUE)
d2 = cbind(d, dm)
d3 = d2[c("Location", "MedianAgeMarriage", "Marriage", "Divorce", "Percentage")]
head(d3)

마지막줄을 실행하면 결과가 아래와 같이 나온다.

> head(d3)
    Location MedianAgeMarriage Marriage Divorce Percentage
1    Alabama              25.3     20.2    12.7        0.8
2     Alaska              25.2     26.0    12.5        4.6
3    Arizona              25.8     20.3    10.8        6.1
4   Arkansas              24.3     26.4    13.5        1.0
5 California              26.8     19.1     8.0        2.0
6   Colorado              25.7     23.5    11.6        2.7

이제 각 변수를 표준화한 후에 예측모델을 세운다.

d3$stdD = standardize(d3$Divorce)
d3$stdM = standardize(d3$Marriage)
d3$stdA = standardize(d3$MedianAgeMarriage)
d3$stdP = standardize(d3$Percentage)

flist = alist(
  stdD ~ dnorm(mu, sigma), 
  mu <- alpha + beta_M*stdM + beta_A*stdA + beta_P*stdP, 
  alpha ~ dnorm(0, 0.2), 
  beta_M ~ dnorm(0, 0.5), 
  beta_A ~ dnorm(0, 0.5), 
  beta_P ~ dnorm(0, 0.5), 
  sigma ~ dexp(1)
)

modelfit = quap(flist, data=d3)
precis(modelfit)

실행한 결과

> precis(modelfit)
        mean   sd  5.5% 94.5%
alpha   0.00 0.09 -0.15  0.15
beta_M  0.04 0.15 -0.20  0.27
beta_A -0.69 0.14 -0.92 -0.46
beta_P -0.31 0.12 -0.51 -0.12
sigma   0.73 0.07  0.62  0.85

 

 

5M5 풀이

yi: obesity

x1: price of gasoline

x2: 하루에 운전하는 시간

x3: 외식비

 

모델

yiNormal(μi,σ)

μi=α+β1x1i+β2x2i+β3x3i

 

 

 

Comments