회귀분석... 아직도 난 이게 뭔지 모르겠어...
회귀분서억
관찰된 연속형 변수들에 대해 두 변수 사이의 모형을 구한 뒤 적합도를 측정해 내는 분석 방법이라고 하는데, 그래서 이게 뭔데요? 하나(단순선형-y = β₀ + β₁x + ε) 혹은 그 이상(다중선형-단순선형에서 x가 오지게 많아짐)의 독립변수들이 종속변수에 미치는 영향을 추정할 수 있는 통계기법 이다. 일차식으로 나오는것도 있고, 로지스틱이라고 해서 0 또는 1만 있는 거 할 때도 있는데 뒤에껀 무슨 변환식 보면 갑자기 자연로그가 튀어나오더니 시그모이드 등장함... 하다보면 이항 다항 튀어나오고 난리납니다.
다중공선성
회귀분석을 망칠수도 있는 요인이다. 이게 뭐냐고? 여러분들 멘델의 유전법칙 아십니까? 우열의 법칙이랑 독립의 법칙이라고 있는데, 독립의 법칙은 두 쌍 이상의 대립 형질이 유전될 때, 서로 다른 형질을 결정하는 유전자는 서로 영향을 주지 않고 독립적으로 분리되어 유전된다는거잖아요. 근데 멘델의 법칙을 따르지 않는 케이스도 있다. 대표적인 게 ABO식 혈액형인데, A형과 B형은 O형보다는 우성이지만 둘이 또이또이 쌤쌤이라 AB형이라는 조합이 나오는 것이다.
우리 다중공선성 하다가 왜 유전자로 틀었어요? 아 끝까지 들어봐요. 한국말은 끝까지 들어야돼… 연관 유전이라고 들어보셨습니까? 예? 뭐요? 생물시간에 졸아서 모르는데요! 아니 이건 퍼잔거랑 상관 없이 중고딩 수업시간에서는 안 다뤘을거임… 자 봐봐요. 사람 염색체가 23쌍이잖아요. 일반적인 남자는 2n+XY, 일반적인 여자는 2n+XX. 근데 사람의 유전자는 몇만개 되잖아요? 그니까 대충 비둘기집의 원리에 입각해서(?) 몇 개의 유전자들이 같은 염색체에 들어있게 된다. 좀 멀리 있으면 염색체 교차될때 뭐 짬뽕되고 그러기야 하겠지만, 얘네가 거리가 가까우면 얘 유전될때 쟤가 따라가기때문에 멘델의 유전법칙이 성립하지 않게 된다.
그래서 이게 다중공선성이랑 뭔 상관인데요? 독립변수들이 지들끼리 연관이 있다면? 당신의 결과에 묵념. 회귀분석에서 모형의 독립변수들간에 강한 상관관계를 갖는 것이 다중공선성이고, 특히나 다중회귀분석에서는 이걸 고려해야 한다. 지표가 VIF랑 상태지수 두 개인데, VIF는 4 이상이면 다중공선성이 있다고 보고, 10 이상이면 쓰으읍 이거 심각한데 수준이 된다. 상태지수는 10 이상이면 문제가 좀 있는거고 30 이상이면 오늘 점심 뭐먹지급 심각한 수준이 된다. 이 컷트라인 잘 기억하십쇼.
단순회귀분석
> summary(linear_regression)
Call:
lm(formula = cyl ~ hp, data = mtcars)
Residuals:
Min 1Q Median 3Q Max
-2.27078 -0.74879 -0.06417 0.63512 1.74067
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.006795 0.425485 7.067 7.41e-08 ***
hp 0.021684 0.002635 8.229 3.48e-09 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 1.006 on 30 degrees of freedom
Multiple R-squared: 0.693, Adjusted R-squared: 0.6827
F-statistic: 67.71 on 1 and 30 DF, p-value: 3.478e-09
일단 맨 밑에 있는 P-value를 보니, 이 회귀분석은 유의수준 0.05, 0.01에서(신뢰구간 95%, 99%) 통계적으로 유의하다. 예? P-value가 유의수준보다 크면 안된다. 예를 들어서 P-value가 0.04면 유의수준 0.05에서는 통계적으로 유의하지만 유의수준 0.01에서는 아 씁 귀무가설 채택각 나왔죠? 가 된다.
다음으로 lm(formula = cyl ~ hp, data = mtcars)를 보자. 여기서 함정으로 자주 나오는 문제가 뭐가 독립변수고 뭐가 종속변수냐는 얘기인데, R에서 회귀분석 할 때는 lm (종속(Y) ~ 독립(X), data=데이터셋)으로 쓴다. 그니까 저 회귀분석에서는 cyl이 종속, hp가 독립이다. 이거 헷갈리지 마십쇼.
intercept는 y절편이다. 밑에껀 아마 ax+b에서 a인듯? intercept가 b고. Pr(>|t|)는 일차식에서는 못봤고… 아니 기출이 다 다중 이항 다항 이래… 아무튼. 쟤는 대충 이 변수가 통계적으로 유의한가를 보는거라고 보면 된다. Multiple R-squared: 0.693, Adjusted R-squared: 0.6827은 각각 R², 수정된 R²인데 1에 가까울수록 좋은거다. 이 모델은 0.6827이라 설명력은 음…
Bradford assay 할 때 엑셀로 추세선 그리고 R²를 확인했는데, 그 이유를 여기서 알게 됐음. 아, 이거 1에 가까울수록 스탠다드 커브의 설명력이 설득력을 얻는구나.
다중회귀분석
> summary(multi_regression)
Call:
lm(formula = hp ~ cyl + mpg + wt + drat, data = mtcars)
Residuals:
Min 1Q Median 3Q Max
-52.185 -13.840 -4.268 12.969 116.812
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -85.127 140.572 -0.606 0.549854
cyl 29.430 7.313 4.025 0.000415 ***
mpg -4.207 2.609 -1.613 0.118451
wt -2.837 14.159 -0.200 0.842677
drat 39.860 18.263 2.183 0.037939 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 36.07 on 27 degrees of freedom
Multiple R-squared: 0.759, Adjusted R-squared: 0.7233
F-statistic: 21.26 on 4 and 27 DF, p-value: 5.111e-08
연관 있어보이는 걸로 했는데 망했는데 이거? 아무튼, 이게 다중회귀분석이다. 독립변수들이 +로 묶여있는데, 여기서는 cyl, mpg, wt, drat 네 개가 묶여있다. 그리고 이 중에서 0.05보다 P-value가 큰 변수가 mpg랑 wt 두개다. 저 둘은 유의수준 0.05일 때 통계적으로 유의하지 않다. 그렇다고 덮어놓고 빼지는 않겠지만…
나머지는 인터셉트랑 ax+bx+cx+dx의 a, b, c, d들이고 뭐 그렇다. 여기는 R^2가 위에 일차항보다 더 높고, 모델 전체의 P-value는 여전히 통계적으로 유의한 게 특징. 저 두개 빼고 다시 다항 하면 어떻게 되냐고?
Call:
lm(formula = hp ~ cyl + drat, data = mtcars)
Residuals:
Min 1Q Median 3Q Max
-54.235 -25.571 -8.917 23.576 119.507
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -215.768 88.362 -2.442 0.0209 *
cyl 39.012 5.205 7.496 2.92e-08 ***
drat 33.662 17.385 1.936 0.0626 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 36.96 on 29 degrees of freedom
Multiple R-squared: 0.7281, Adjusted R-squared: 0.7094
F-statistic: 38.83 on 2 and 29 DF, p-value: 6.288e-09
왜 설명력이 미묘하게 좀 더 떨어진건지 설명해보실까.
> AIC(multi_regression)
[1] 326.8388
lm(formula = hp ~ cyl + mpg + wt + drat, data = mtcars)의 AIC이다. 왜 운전하다가 뭐 어기면 딱지 날아오고 벌점붙고 그러죠? AIC도 일종의 회귀 모델에 붙는 벌점이라고 보면 된다. 이건 사실 절대적인 기준선은 없고 두 모델 중 뭐가 나은가를 비교할 때 보는건데, 숫자가 작을수록 벌점을 덜 받은거기때문에 좋은거다. 일단 저 모델은 벌점 꼬라지를 보니 시투더망인건 알겠음.
> vif(multi_regression)
cyl mpg wt drat
4.064721 5.890263 4.574095 2.272304
세개가 VIF 4 돌파면 이 모델은 망한 게 맞다.
로지스틱 회귀분석
> summary(logistic)
Call:
glm(formula = Species ~ Sepal.Length, family = binomial, data = iris)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -27.8285 4.8276 -5.765 8.19e-09 ***
Sepal.Length 5.1757 0.8934 5.793 6.90e-09 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 190.954 on 149 degrees of freedom
Residual deviance: 71.836 on 148 degrees of freedom
AIC: 75.836
Number of Fisher Scoring iterations: 7
문제를 봤더니 lm이 아니라 glm이 있었나요? 로지스틱입니다. 시그모이드 그거 말하는거 맞다. 근데 쟤는 절편이 의미가 있나...? 5.1757은 어... 이게 기울기 뭐 그런건 맞는데 그냥 기울기가 저게 아니고... 이게 좀 복잡하긴 한데 오즈비라고 있습니다. 그건 나중에 설명해드리겠음. 아무튼 로지스틱은 0 아니면 1이라서 얘를 로그 오즈로 변환한 다음에 지지고 볶는 구조거든요? 그래서

저기서 왼쪽에 log(0/(1-p))가 5.1757인거다. 저기서 왼쪽에 log(0/(1-p))가 5.1757인거다. 그 외에는 변수에 P밸류 있고, 쟤는 걍 회귀분석과 달리 AIC가 결과에 나오는데 저 모델의 '벌점'이 75.836이라는 의미다.
> summary(logistic)
Call:
glm(formula = Species ~ Sepal.Length + Petal.Length, family = binomial,
data = iris)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 78.26 316177.75 0.000 1.000
Sepal.Length -39.83 81738.90 0.000 1.000
Petal.Length 48.60 43659.68 0.001 0.999
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 1.9095e+02 on 149 degrees of freedom
Residual deviance: 5.0543e-09 on 147 degrees of freedom
AIC: 6
Number of Fisher Scoring iterations: 25
변수 하나 늘렸더니 P밸류 급떡상한거 실화냐.
> vif(logistic)
Sepal.Length Sepal.Width
4.802804 4.802804
그럴만 했다.
릿지와 라쏘
이거는 그… 쉽게 말하자면 회귀모델에 제약조건을 주는 것이다. 릿지는 L2, 라쏘는 L1인데 릿지는 R, 라쏘는 L이라 라쏘가 레벨 1이라고 외우면 됨.
릿지(L2): 가중치들의 제곱합을 최소화하는 것을 제약조건으로 추가한다.
라쏘(L1): 가중치들의 절대값의 합을 최소화한다.
외우십시오.
'Coding > R' 카테고리의 다른 글
| ADsP-연관분석 데이터 해석해보기 (0) | 2025.11.22 |
|---|---|
| 포켓몬 이로치가 나올 확률로 이항분포를 때려보자 (0) | 2025.10.14 |
| R 배워보기-8.4. Other interesting graphs (0) | 2022.08.23 |
| R 배워보기-8.3. Basic graphs with standard graphics (0) | 2022.08.23 |
| R 배워보기-8.2. Miscellaneous (0) | 2022.08.23 |