본문 바로가기
  • "You can't manage what you can't measure" Peter Drucker
데이터 분석 (with Rstudio)

Visualization (데이터 시각화) 중요성과 기본 원칙 [앤스컴 콰르텟, 데이터 공룡(Datasaurus Dozen)]

by Vitaminymc 2023. 8. 22.
반응형

데이터 시각화 (Data Visualization)

숫자 형태의 Data를 그래프나 그림 등의 형태로 표현하는 과정

Visualization 중요성

분석도 중요하지만, 분석한 결과를 효과적으로 전달하는 것이 더 중요할 수도 있음

“많은 양의 Data를 분석(정리) 완료” → 어떻게 효과적으로 전달할 것인가?

많은 양의 Data를 일목요연 ( 一目瞭然 : 한눈에 들어오게 분명하고 명백)하게 제시하여,
복잡하고 많은 데이터의 패턴과 특징을 단번에 파악할 수 있도록 함,

신속한 의사결정을 돕기 위해서...

※ 요연(瞭然)’은 분명하고 명백하다

Data를 시각화 하면 Data가 담고 있는 정보나 의미를 보다 쉽게 파악할 수 있으며,

시각화 결과를 통해서 영감 (Inspiration)를 얻기도 함


삼성SDS Vision 2020 : insight to inspiration

본질을 파악해 분석함으로써 예측력을 갖추고(insight), 고객 경험에 대한 풍부한 연구로 (Customer Experience) 인간의 감성을 풍요롭게 하고 세상에 영감을 주는(inspiration) 솔루션과 서비스를 제공하자는 의미
 -  애널리틱스(Analytics, 빅데이터분석)를 접목해 제조 IT 혁신 (품질, 수율, 생산성 등)
 -  산업 IoT와 애널리틱스 접목한 솔루션(첼로플러스와 첼로스퀘어 등)을 통한 물류 가시성과 배송 정확도 제공

2015년 4월 15일, 삼성SDS 창립 30주년 기념식 및 비전 선포식


아래 같은 Data의 요약 통계를 보고, 내릴 수 있는 판단은?

사례 1

평균 등의 통계를 볼 때, 정규분포 형태라고 예상(상상)할 수 있으나,

그래프(차트)를 그려보면, 다른 특성을 가짐

[데이터]

65, 15, 20, 70, 40, 50, 40, 20, 30, 75, 60, 20, 35, 80, 50, 80, 55, 20, 80, 10, 
20, 90, 30, 80, 80, 25, 70, 85, 90, 35, 80, 20, 20, 80, 60, 20, 80, 10, 20, 80

x = c (60, 15, 50, 75, 40, 50, 45, 20, 30, 70, 
60, 20, 30, 80, 50, 80, 55, 20, 80, 10, 
20, 90, 30, 80, 80, 25, 65, 85, 90, 35, 
80, 20, 20, 80, 60, 20, 80, 10, 20, 70)

summary(x)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      10       20           50         50         80        90 
ggplot(df, aes(x = x)) +
  geom_histogram(alpha = 0.5, binwidth = 5) +
  geom_boxplot(alpha = 0.5, width = 1.2, fill = "skyblue", color = "black") +
  scale_x_continuous(breaks = seq(10, 90, by = 10), limits = c(10, 90))

  • 최솟값 : 10, Q1 : 20, 평균 : 50, 중앙값 : 50, Q3 80, 최댓값 90
  • 그래프 없이 평균 등 기술 통계만 보고는 데이터 경향을 다르게 해석할 수 있음
  • 그래프를 보면, 평균의 대표성이 없음을 알 수 있음
  • 평균은 50이나, Q1과 Q3에 집중되는 경향이 있음

사례 2 : 앤스컴 콰르텟(Anscombe’s quartet) 

기술 통계량이 유사하다고 해서, 유사한 Data로 볼 수 있으나, 

그래프(차트)를 통해서 패턴과 특징이 다르다고 판단할 수 있음 

기술통계량은 유사하지만 분포나 그래프는 매우 다른 4개의 데이터 세트

1973년, 통계학자인 프란시스 앤스컴(Francis Anscombe)이 

데이터 분석 전 1) 시각화의 중요성과 2) 특이치 및 주영향관측값(influential observation)의 영향을 보여주기 위해 만듦

앤스컴 콰르텟 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)

 

앤스컴 콰르텟 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 간단한 요약 통계로 보면 동일하지만, 시각화하면 매우 다르다. 앤스컴 콰르텟(Anscombe's quartet)는 기술통계량은 유사하지만 분포나 그래프는 매우 다른 4개의 데

ko.wikipedia.org

I II
III
IV
x1 y1 x2 y2 x3 y3 x4 y4
10 8.04 10 9.14 10 7.46 8 6.58
8 6.95 8 8.14 8 6.77 8 5.76
13 7.58 13 8.74 13 12.74 8 7.71
9 8.81 9 8.77 9 7.11 8 8.84
11 8.33 11 9.26 11 7.81 8 8.47
14 9.96 14 8.1 14 8.84 8 7.04
6 7.24 6 6.13 6 6.08 8 5.25
4 4.26 4 3.1 4 5.39 19 12.5
12 10.84 12 9.13 12 8.15 8 5.56
7 4.82 7 7.26 7 6.42 8 7.91
5 5.68 5 4.74 5 5.73 8 6.89
AQ <- read.csv('Anscombe_quarte.csv')  

summary(AQ)
x1
Min.   : 4.0
1st Qu.: 6.5
Median : 9.0
Mean   : 9.0
3rd Qu.:11.5
Max.   :14.0

y1
Min.   : 4.260
1st Qu.: 6.315
Median : 7.580
Mean   : 7.501
3rd Qu.: 8.570
Max.   :10.840

x2
Min.   : 4.0
1st Qu.: 6.5
Median : 9.0
Mean   : 9.0
3rd Qu.:11.5
Max.   :14.0

y2
Min.   :3.100
1st Qu.:6.695
Median :8.140
Mean   :7.501
3rd Qu.:8.950
Max.   :9.260

x3
Min.   : 4.0
1st Qu.: 6.5
Median : 9.0
Mean   : 9.0
3rd Qu.:11.5
Max.   :14.0

y3
Min.   : 5.39
1st Qu.: 6.25
Median : 7.11
Mean   : 7.50
3rd Qu.: 7.98
Max.   :12.74

x4
Min.   : 8 
1st Qu.: 8 
Median : 8 
Mean   : 9  
3rd Qu.: 8 
Max.   :19 

y4
Min.   : 5.250
1st Qu.: 6.170
Median : 7.040
Mean   : 7.501
3rd Qu.: 8.190
Max.   :12.500

var(AQ$x1) var(AQ$x2) var(AQ$x3) var(AQ$x4)
11 11 11 11
sd(AQ$x1) sd(AQ$x2) sd(AQ$x3) sd(AQ$x4)
3.316625 3.316625 3.316625 3.316625
var(AQ$y1) var(AQ$y2) var(AQ$y3) var(AQ$y4)
4.127269 4.127629 4.12262 4.123249
sd(AQ$y1) sd(AQ$y2) sd(AQ$y3) sd(AQ$y4)
2.031568 2.031657 2.030424 2.030579
  • x와 y의 평균, 분산(표준편차) 등이 동일
항목 정확도
x 평균 9 정확
x 표본분산 11 정확
y 평균 7.50 소수점 2자리
y 표본분산 4.12 소수점 2자리
선형회귀선 y = 3.00 + 0.500x 각 소수점 2자리, 소수점 3자리
AQ2 <- read.csv('Anscombe_quarte2.csv')  

AQ2 %>%
  ggplot(aes(x, y, col=case) ) + geom_point(size=2.5) +
  geom_smooth(method = "lm", se = FALSE) + # 선형 회귀선 추가, 
  theme(legend.position = "none") +
  facet_wrap(~case, ncol = 2)

#se 매개변수를 FALSE로 설정하여 회귀선 주변의 신뢰 구간을 제외하고 표시

앤스컴&nbsp;콰르텟(Anscombe&rsquo;s&nbsp;quartet)

# 선형 회귀 모델
model_1 <- lm(y1 ~ x1, data = AQ)

# 회귀식의 계수 추출
coef(model_1)[1] # 첫 번째 계수 : 회귀 모델에서 y절편(Intercept)
coef(model_1)[2] # 두 번째 계수 : 회귀 모델에서 독립 변수(x)의 기울기(slope)

# 회귀식 출력
cat("회귀식1: y =", coef(model_1)[2], "x +", coef(model_1)[1])
회귀식1: y = 0.5000909 x + 3.000091
summary(model_1)
Call:
lm(formula = y1 ~ x1, data = AQ)

Residuals:
     Min            1Q     Median          3Q       Max 
-1.92127 -0.45577 -0.04136  0.70941  1.83882 

Coefficients:
                         Estimate    Std. Error     t value       Pr(>|t|)   
(Intercept)           3.0001         1.1247     2.667     0.02573 * 
x1                         0.5001         0.1179     4.241     0.00217 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.237 on 9 degrees of freedom
Multiple R-squared:  0.6665, Adjusted R-squared:  0.6295 
F-statistic: 17.99 on 1 and 9 DF,  p-value: 0.00217
  • Call : 사용한 함수와 함수에 전달한 인자
  • Residuals : 잔차(Residuals)에 대한 요약 통계량이 표시
    최솟값(Min), 1사분위수(1Q), 중간값(Median), 3사분위수(3Q), 최댓값(Max) 값 표시
  • Coefficients : 회귀 모델의 계수에 대한 정보가 제시
    • (Intercept)는 y절편을 나타내며, x1은 독립 변수 x1의 계수
    • Estimate는 각 계수의 추정값, Std. Error는 표준 오차, t value는 t-값, Pr(>|t|)는 p-값(계수의 유의성 검정 결과)
    • Signif. codes는 p-값에 따른 유의성 코드
  • Residual standard error : 잔차 표준 오차, 잔차의 변동을 나타내며 모델의 예측력을 평가하는 지표
  • Multiple R-squared : 다중 R 제곱은 모델이 종속 변수의 변동 중 얼마나 많은 부분을 설명하는지를 나타내는 값
    값이 클수록 모델이 데이터를 더 잘 설명
  • Adjusted R-squared : 수정된 R 제곱은 다중 R 제곱을 독립 변수의 개수와 표본 크기로 조정한 값
  • F-statistic : F-통계량은 모델의 유의성 검정 결과
  • DF : 자유도(Degrees of Freedom)
  • p-value : F-통계량에 대한 유의성 검정 결과, p-값이 작을수록 모델이 유의미하게 설명력을 가짐
# 선형 회귀 모델
model_2 <- lm(y2 ~ x2, data = AQ)

# 회귀식의 계수 추출
coef(model_2)[1] # 첫 번째 계수 : 회귀 모델에서 y절편(Intercept)
coef(model_2)[2] # 두 번째 계수 : 회귀 모델에서 독립 변수(x)의 기울기(slope)

# 회귀식 출력
cat("회귀식2: y =", coef(model_2)[2], "x +", coef(model_2)[1])
회귀식2: y = 0.5 x + 3.000909
# 선형 회귀 모델
model_3 <- lm(y3 ~ x3, data = AQ)

# 회귀식의 계수 추출
coef(model_3)[1] # 첫 번째 계수 : 회귀 모델에서 y절편(Intercept)
coef(model_3)[2] # 두 번째 계수 : 회귀 모델에서 독립 변수(x)의 기울기(slope)

# 회귀식 출력
cat("회귀식3: y =", coef(model_3)[2], "x +", coef(model_3)[1])
회귀식3: y = 0.4997273 x + 3.002455
# 선형 회귀 모델
model_4 <- lm(y4 ~ x4, data = AQ)

# 회귀식의 계수 추출
coef(model_4)[1] # 첫 번째 계수 : 회귀 모델에서 y절편(Intercept)
coef(model_4)[2] # 두 번째 계수 : 회귀 모델에서 독립 변수(x)의 기울기(slope)

# 회귀식 출력
cat("회귀식4: y =", coef(model_4)[2], "x +", coef(model_4)[1])
회귀식4: y = 0.4999091 x + 3.001727

geom_smooth() 함수

  • 데이터의 추세를 시각화하기 위해 사용
  • 주어진 데이터에 대해 회귀선을 자동으로 그려 줌
  • method 매개변수를 "lm"은 선형 회귀를 의미하며, "loess"는 로지스틱 회귀를 의미
  • se 매개변수는 회귀선 주위의 신뢰 구간(confidence interval)을 나타내는 옵션, 기본값은 TRUE
  • se = TRUE: 회귀선 주위에 회귀 모델의 추정 오차에 대한 신뢰 구간을 표시, 그래프에서 회귀선 주위에 연한 영역이 그려지는데, 이 영역이 신뢰 구간을 나타냄
  • se = FALSE: 신뢰 구간을 표시하지 않습니다. 그래프 상에 회귀선만 나타남

lm() 함수

  • lm()은 선형 회귀 분석을 수행하기 위한 함수 (선형 회귀는 종속 변수와 하나 이상의 독립 변수 간의 관계를 모델링)
  • lm(formula, data) : formula는 종속 변수와 독립 변수 간의 관계를 정의한 수식이며, y ~ x는 종속 변수 y와 독립 변수 x 간의 관계를 나타내는 회귀식
  • summary() 함수를 사용하여 모델의 요약 정보를 출력할 수 있음
  • 로지스틱 회귀 모델을 생성하려면 R의 glm() 함수를 사용
  • glm(formula, family = binomial(link = "logit"), data)
  • y ~ x는 로지스틱 회귀식을 나타내며, family = binomial(link = "logit")은 로지스틱 회귀 모델임을 지정

사례 3 : Datasaurus Dataset 

Alberto Cairo가 만든, 요약 통계가 아니라 시각화가 중요한 이유를 보여주는 데이터 세트

The Datasaurus was created by Alberto Cairo. Datasaurus shows us why visualisation is important, not just summary statistics.  https://cran.r-project.org/web/packages/datasauRus/vignettes/Datasaurus.html

install.packages('datasauRus')

library(datasauRus)

ggplot(datasaurus_dozen, aes(x = x, y = y, colour = dataset))+
  geom_point()+
  theme_void()+
  theme(legend.position = "none")+
  facet_wrap(~dataset, ncol = 4)

Datasaurus dataset

Visualization 기본 원칙

  • 데이터를 왜곡하지 않고 정확하게 시각화해야 함
  • 시각화의 목적과 대상 그룹을 고려하여 그래프를 선택해야 함
  • 적절한 그래프 유형과 속성을 선택하여 데이터의 특성을 잘 표현해야 함
  • 그래프의 레이아웃, 축 레이블, 범례 등을 적절하게 조정하여 가독성을 높여야 함
  • 색상과 텍스트의 사용을 신중하게 고려하여 시각적인 혼돈을 피해야 함

당신의 시각화가 잘못된 이유

https://newsjel.ly/archives/newsjelly-report/14471

 

당신의 데이터 시각화가 잘못된 4가지 이유 - 뉴스젤리 : 데이터 시각화 전문 기업

시간을 들여 데이터 시각화와 대시보드를 제작했는데, 생각만큼 효율적이지 않아 고민한 적이 있나요? 그렇다면 지금 바로 이 글을 눌러 효과적인 데이터 시각화 대시보드를 만들기 위해 반드

newsjel.ly

1. 적합한 데이터 시각화 유형(차트)을 선택했나요?

2. 데이터 시각화의 가독성을 고려했나요?

3. 목적에 따라 데이터 시각화 대시보드를 설계했나요?

4. 데이터 시각화 대시보드에서 중요한 정보를 한눈에 파악할 수 있나요?


데이터 시각화의 모든 것’ by 강원양 (brunch.co.kr)

https://brunch.co.kr/@dimension-value/56

 

당신도 데이터 시각화를 해야 하는 5가지 이유

누구라도 데이터를 활용할 줄 알아야 하는 시대, 데이터 시각화로 가능하다 | ‘데이터가 중요하다.’, 누구나 한 번쯤 들어봤을 이야기입니다. 데이터 중요성에 대한 사회적 인식은 물론이고,

brunch.co.kr

 

  • 많은 양의 Data를 한눈에 볼 수 (쉽게 파악할 수) 있도록 요약
  • 요약 통계보다 정확한 Data 분석 결과를 도출 (Data 특징과 관계 이해 증대)
  • Data 분석 관련 전문 지식이 없어도, 누구나 쉽게 Insight를 찾을 수 있도록 지원

엑셀표 VS. 선 차트

(Data Source : 서울열린데이터광장)

 


데이터 시각화는 어떻게 우리의 눈을 속이는가

https://www.ohmynews.com/NWS_Web/View/at_pg.aspx?CNTN_CD=A0002543684 

시각화 방법에 따라 완전히 다른 메시지가 독자에게 전달될 수 있다는 것이다. 독자들은 이에 주의하여 시각화 자료를 소비해야 할 것이다.

통계 자료를 현명하게 소비하기 위해서는 그 소비자가 정신을 바짝 차려야 한다. 시각화의 경우 그래프가 상호 비교 가능하도록 만들어졌는지, Y축의 범위는 합리적인지, 아래쪽이 생략되었는지, 그렇다면 그 이유는 무엇인지, 막대그래프의 경우 막대들의 높이는 자료에 대략 비례하도록 구성되었는지 등을 잘 보는 것은 시각화 자료를 올바르게 소비하는 기본적인 체크리스트이다.

728x90