제가 요즘하고 있는 연구입니다. 저는 혈관내 초음파를 이용하여 손목에 있는 요골동맥의 동맥경화정도를 평가하여 동맥경화 plaque의 volume(NTAV)을 구했고 환자의 나이(AGE)와 관련이 있는지 연구하였읍니다. 먼저 단순회귀 모형입니다.
out=lm(NTAV~AGE,data=radial)
summary(out)
> summary(out)
Call:
lm(formula = NTAV ~ AGE, data = radial)
Residuals:
Min 1Q Median 3Q Max
-45.231 -14.626 -4.803 9.685 100.961
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 44.3398 14.6251 3.032 0.00302 **
AGE 0.3848 0.2271 1.694 0.09302 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 23.94 on 113 degrees of freedom
Multiple R-squared: 0.02477, Adjusted R-squared: 0.01614
F-statistic: 2.87 on 1 and 113 DF, p-value: 0.09302
cor.test(NTAV,AGE)
plot(NTAV~AGE,data=radial,col="blue")
abline(out,col="red")
그랬더니 다음과 같은 그래프를 얻었읍니다. r =0.1573722, p=0.09302입니다. 하지만 10장의 cars의 dist~speed 예처럼 나이가 많아질수록 NTAV가 더 커지는 경향을 보입니다. 회귀진단 결과는 다음과 같습니다.
첫번쨰 그래프를 보면 나익 많아질수록 잔차가 많아지는 듯해서 dist~speed예처럼 sqrt(NTAV)를 취했고 나이가 0이면 atheroma도 0인것이 맞다고 생각하여 다음과 같이 변환하였읍니다.
cor.test(sqrt(NTAV),AGE-1)
out2=lm(sqrt(NTAV)~AGE-1,data=radial)
summary(out2)
plot(sqrt(NTAV)~AGE-1,data=radial,col="blue")
abline(out2,col="red")
이 경우 r value는 0.1731756, p-value: < 2.2e-16 나왔읍니다.
> summary(out2)
Call:
lm(formula = sqrt(NTAV) ~ AGE - 1, data = radial)
Residuals:
Min 1Q Median 3Q Max
-3.20127 -0.90248 0.02844 1.08721 6.11232
Coefficients:
Estimate Std. Error t value Pr(>|t|)
AGE 0.126175 0.002443 51.66 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.687 on 114 degrees of freedom
Multiple R-squared: 0.959, Adjusted R-squared: 0.9587
F-statistic: 2668 on 1 and 114 DF, p-value: < 2.2e-16
회귀분석 결과는 다음과 같습니다.
질문입니다.
1) 이렇게 sqrt변환하여 통계를 돌리는 것이 맞는 건가요? 회귀분석 그래프를 보면 맞는 것도 같고 아닌것도 같구요. 이것이 적합한 모델인지 한번 보아주십시요. 조언을 기다립니다.
감사합니다.
첫댓글 sqrt-변환이 훨씬 좋아보이기는 합니다. 그런데 NTAV를 sqrt-변환할 수 있는 정당성이 있으면 완벽할 것 같은데요. log-변환도 해보셨나요? 그런데 데이타를 보면 뭔가 age이외에 다른 설명변인이 더 있을것같은데요. 그리고 데이타 cars에서는 거의 mechanistic해서 절편을 제거했는데 이 경우 절편을 제거하는게 논리적으로 그럴듯하지만 나이로 모든게 설명되지 않으니 왠지 찜찜한데요^^
cor.test(sqrt(NTAV),AGE-1) 에서 "AGE-1"은 그냥 AGE를 넣은것이나 동일합니다. 회귀분석에서 "-1"은 절편을 제거하라는 일종의 신호이고, cor.test에 -1을 넣으시면 계산에서 AGE에서 1을 뺍니다. 83페이지 식을 보시면 데이타에서 평균을 빼므로 어떤 숫자를 더하건 빼건 공분산과 상관계수의 값은 동일합니다.
그래프를 보니 화면을 capture하셨나요? R에 File > Save as 에서 그림을 저장할 수 있습니다.
네 다른 변인도 많이 있읍니다. 동맥경화를 일으키는 위험인자는 나이, 성별(남자), 흡연, 당뇨, 고혈압, 콜레스테롤 등 여러가지가 있을 수 있읍니다. 그래서 multivariate analysis를 했는데요, 남자, 고혈압, 당뇨 등이 유의하게 나왔읍니다. 정당성이 있느냐 하시는데 나이와 동맥경화 정도가 linear regression하는 것보다는 나이의 제곱에 비례한다는 것이 더 그럴듯하게 들리는데요. 통계적으로 어느 것이 더 적합한지만 알면 주장할 수 있을 듯 한데요.
전문가께서 나이 제곱이 더 그럴듯하게 들리신다면 그게 맞겠죠. 통계적으로는 제곱이 더 나아보입니다. 다른 변인들도 있다면 다중회귀분석(multiple regression)을 하시는게 나올것같은데요.
책쓰셔서 R의 길로 인도해주시고 통계에 우매한 저같은 사람들통계 상담도 해 주시고 고생이 많습니다. ^^
cor.test에서는 -1을 쓰는 것이 아니군요.. 감사합니다. 맥용 R에서는 save as메뉴에서 pdf로 저장되더군요. pdf를 올릴수 있는지 몰라 그냥 캡쳐했읍니다. 물론 그림도 만들줄 아는데요.그냥 편의상 캡쳐했읍니다.
그리고 또한가지 질문, r-value가 0.17인데 N 수는 115명입니다. R 값이 너무 작은 것 아닌가요? 의의를 둘수 있을까요?
변수 하나로 그정도면 작은 것 같지는 않습니다. 다른 변수를 추가하면 R-square값이 높아질겁니다.