본문 바로가기
R 프로그래밍/R을 활용한 탐색적 자료 분석

탐색적 자료 분석(최종)

by 찐남 2021. 10. 1.
본 포스팅은 R for Data Science를 기반으로 하여 작성했습니다.



1. 패턴과 모델

 

데이터의 패턴은 관계에 대한 단서를 제공합니다. 두 변수 사이에 체계적인 관계가 있으면 데이터에 패턴으로 나타납니다. 패턴을 발견하면 스스로에게 질문을 던져야 합니다.

 

  • 이 패턴이 우연의 일치인가?
  • 패턴이 내포하는 관계를 어떻게 설명할 수 있을까?
  • 패턴이 암시하는 관계는 얼마나 강력합니까?
  • 관계에 영향을 줄 수 있는 다른 변수는 무엇일까?
  • 데이터의 개별 하위 그룹을 보면 관계가 변경될까?

Ex) Old Faithful 분화 길이 대 분화 간 대기 시간의 산점도는 패턴을 보여줍니다. 대기 시간이 길수록 분화도 길어집니다. 산점도에는 위에서 확인한 두 개의 클러스터도 표시됩니다.

 

ggplot(data = faithful) +
____geom_point(mapping = aes(x = eruptions, y = waiting))

 

패턴은 공변성을 나타내기 때문에 데이터 과학자에게 가장 유용한 도구 중 하나를 제공합니다. 변동을 불확실성을 생성하는 현상으로 생각하면 공변동은 불확실성을 줄이는 현상입니다. 두 변수가 공변 하는 경우 한 변수의 값을 사용하여 두 번째 변수의 값에 대해 더 나은 예측을 할 수 있습니다. 공변이 인과 관계로 인한 것이라면(특별한 경우) 한 변수의 값을 사용하여 두 번째 변수의 값을 제어할 수 있습니다. 

 

모델은 데이터에서 패턴을 추출하는 도구입니다. 예를 들어 앞에서 살펴본 다이아몬드 데이터를 생각해 보세요. 컷과 캐럿, 캐럿과 가격은 밀접한 관련이 있기 때문에 컷과 가격의 관계를 이해하기 어렵습니다. 모델을 사용하여 가격과 캐럿 간의 매우 강한 관계를 제거하여 남아 있는 미묘함을 탐색할 수 있습니다.

다음 코드는 캐럿에서 가격을 예측한 다음 잔차(예측 값과 실제 값의 차이)를 계산하는 모델에 적합합니다. 캐럿의 효과가 제거되면 잔차를 통해 다이아몬드 가격을 파악할 수 있습니다.

 

library(modelr)
mod <- lm(log(price) ~ log(carat), data = diamonds)
diamonds2 <- diamonds %>%
____add_residuals(mod) %>%
____mutate(resid = exp(resid))

ggplot(data = diamonds2) +
____geom_point(mapping = aes(x = carat, y = resid))

 

캐럿과 가격 사이의 강한 관계를 제거하고 나면 컷과 가격 사이의 관계에서 기대하는 바를 알 수 있습니다. 크기에 비해 품질이 좋은 다이아몬드는 더 비쌉니다. 

 

ggplot(data = diamonds2) +
____geom_boxplot(mapping = aes(x = cut, y = resid))

 

모델과 모델러 패키지가 책의 마지막 부분인 모델에서 어떻게 작동하는지 배우게 될 것입니다. 데이터 랭글링 및 프로그래밍 도구가 있으면 모델이 무엇이고 어떻게 작동하는지 이해하는 것이 가장 쉽기 때문에 나중에 모델링을 저장합니다.



2. ggplot2 호출

 

ggplot(data = faithful, mapping = aes(x = eruptions)) +
____geom_freqpoly(binwidth = 0.25)

 

일반적으로 함수에 대한 첫 번째 또는 두 개의 인수는 매우 중요하므로 반드시 숙지해야 합니다. ggplot()에 대한 처음 두 인수는 데이터와 매핑이고, aes()에 대한 처음 두 인수는 x와 y입니다. 앞으로는 이러한 이름을 제공하지 않습니다. 그러면 타이핑이 절약되고 상용구의 양을 줄임으로써 플롯 간의 차이점을 더 쉽게 확인할 수 있습니다. 

 

이전 플롯을 더 간결하게 다시 작성하면

ggplot(faithful, aes(eruptions)) +
____geom_freqpoly(binwidth = 0.25)

 

앞선 코드와 결과는 동일합니다. 

 

데이터 변환 파이프라인의 끝을 플롯으로 바꿀 것입니다. %>%에서 +로의 전환을 주의 깊게 보셔야 합니다. 이 전환이 필요하지 않았으면 좋겠지만 불행히도 파이프(%>%)가 발견되기 전에 ggplot2가 생성되었습니다. 

 

diamonds %>%
____count(cut, clarity) %>%
____ggplot(aes(clarity, cut, fill = n)) +    # 파이프(%>%)가 아닌 + 기호 사용
____geom_tile()

 

 



반응형

댓글