안녕하세요,
지난 포스팅에서 SAS를 활용해서 기술통계분석, 상관분석, 회귀분석을 한방에 끝낼 수 있는 매크로 코드를 소개드렸습니다.
[SAS]기술통계분석부터 회귀 분석까지 한방에 끝내는 매크로
안녕하세요, 사회과학 분야의 석사학위 논문을 살펴보면 최근에는 중급, 고급 통계기법이 많이 사용되고 있지만, 여전히 기술통계분석, 상관분석, 다중회귀분석으로 이어지는 연구를 어렵지 않
paratussemper.tistory.com
이번 포스팅은 R 사용자를 위하여 이전 포스팅에서 소개드린 SAS 코드를 R로 변환하여 보았습니다! R은 비교적 코드가 단순해서 따로 매크로로 만들지 않았습니다:)
SASHELP.CLASS 데이터셋 만들기
우선 아래의 코드를 실행시켜 봅니다. 벡터형식으로 5개의 변수를 만든 후 data.frame을 활용해서 class라는 데이터프레임을 만들었습니다.
Name <-c("Alfred", "Alice", "Barbara", "Carol", "Henry", "James", "Jane", "Janet", "Jeffrey", "John", "Joyce", "Judy", "Louise", "Mary", "Philip", "Robert", "Ronald", "Thomas", "William")
Sex <-c("M", "F", "F", "F", "M", "M", "F", "F", "M", "M", "F", "F", "F", "F", "M", "M", "M", "M", "M")
Age <-c(14, 13, 13, 14, 14, 12, 12, 15, 13, 12, 11, 14, 12, 15, 16, 12, 15, 11, 15)
Height <-c(69, 56.5, 65.3, 62.8, 63.5, 57.3, 59.8, 62.5, 62.5, 59, 51.3, 64.3, 56.3, 66.5, 72, 64.8, 67, 57.5, 66.5)
Weight <-c(112.5, 84, 98, 102.5, 102.5, 83, 84.5, 112.5, 84, 99.5, 50.5, 90, 77, 112, 150, 128, 133, 85, 112)
class <- data.frame(Name,Sex,Age,Height,Weight)
그리고 head(), str()을 사용해서 데이터 프레임이 잘 만들어졌는지 확인해 보겠습니다. str()을 사용하면 데이터 프레임 구조를 확인할 수 있는데 변수의 숫자형, 문자형 여부를 확인할 수 있습니다. 아래의 결과를 살펴보면 Name, Sex라는 변수는 문자형, 그 외의 변수들은 숫자형임을 확인할 수 있습니다.
head(class)
str(class)
기술통계분석
간단한 기술통계분석의 경우 R에 내장된 summary, table, plot으로 할 수 있습니다. 간단한 코드이니 직접 해보시는 것을 추천합니다.
summary(class)
table(class$Sex)
plot(class$Height, class$Weight)
상관분석
상관분석 또한 내장된 함수를 이용해서 분석할 수 있습니다. 우선 cor()를 사용하면 피어슨 상관계수를 얻을 수 있습니다. 그러나 소수점이 너무 많아서 지저분한 느낌이라 round()를 이용하여 소수점 3자리까지만 나오게 하였습니다. cor()에 문자형 변수를 넣게 되면 에러가 나기 때문에 조금 번거로운 부분이 있습니다. pairs()를 사용하면 변수 간 산점도를 확인할 수 있습니다. 아래의 그림을 보면 height와 weight는 선형의 관계가 있어 보이는군요.
round(cor(class[,c(3:5)], method="pearson"),3)
pairs(class[,c(3:5)])
선형회귀분석
회귀분석 자체는 R에 내장된 lm()함수를 이용하여 분석할 수 있습니다. 그러나 회귀분석의 경우 표준화회귀계수, 회귀진단 등이 필요하므로 lm()만으로는 한계가 명백합니다. 이를 위해서 car와 lm.beta 패키지를 사용했습니다. 이 밖에도 이분산성 등의 진단이 필요하지만 이번 포스팅에서는 생략하겠습니다.
library(car)
library(lm.beta)
reg<-lm(Weight ~ Age + Height + Sex)
list(summary(reg), vif(reg), lm.beta(reg))
par(mfrow=c(2,2))
plot(reg)
지금까지 R을 활용하여 사회과학 논문에서 반드시 등장하는 기술통계분석, 상관분석, 회귀분석을 하는 방법을 알아봤습니다. 제가 소개해드린 R에 내장된 기본 함수 뿐만 아니라 다양한 패키지를 통해서 동일한 분석을 수행할 수 있으니 참고하시면 좋을 것같습니다! 단적인 예로 제가 소개해드린 cor()만으로 논문의 상관분석결과 표를 채우는 것은 어렵습니다. 그렇기 때문에 cor.test()나 Hmisc패키지의 rcorr()가 등장할 수 있었겠죠.
궁금하신 점은 언제든 댓글로 담겨주세요:)
감사합니다!
☆ 제 코드는 정답이 아니며 틀린 부분이 있을 수 있으니 주의하여 활용하시기 바랍니다.
[R] 구글 코랩에서 R 사용하기 (0) | 2023.04.18 |
---|---|
[R] 그래프 한글 깨짐 (showtext 패키지) (0) | 2023.04.11 |
댓글 영역