59doit

[ R ] 데이터 시각화 #2 연속변수 시각화 (1) 본문

Programming/R

[ R ] 데이터 시각화 #2 연속변수 시각화 (1)

yul_S2 2022. 12. 22. 11:29
반응형

 연속변수 시각화

연속변수(Continuous quantitative data): 시간, 길이 등과 같이 연속성을 가진 변수 상자 그래프, 히스토그램, 산점도

(1) 상자 그래프 시각화

상자 그래프: 요약정보를 시각화하는데 효과적

데이터의 분포 정도와 이상치 발견을 목적으로 하는 경우 사용

 

# VAdeaths 데이터 셋을 상자 그래프로 시각화하기

#1  “notch=FALSE”일 때

boxplot(VADeaths ,range=0)

‘range=0’ 속성에 의해 칼럼의 최소값과 최대값을 점선으로 연결

 

#2  “notch=TRUE”일 때

boxplot(VADeaths, range = 0, notch = T)




abline(h = 37, lty = 3, col = "red")       # h : y 좌표, lty  : 점선, col : 색상



 ‘notch = T’속성에 의해 중위수 기준으로 허리선이 추가

cf) notch : V자나 U자형으로 움푹 팬 자리.

 

abline()함수에 의해 지정된 y좌표(h)에 빨간색(col) 점선(lty) 적용

 

 

 

 

(2) 히스토그램 시각화

 - 히스토그램(histogram): 측정값의 범위(구간)를 그래프의 x축으로 놓고, 범위에 속하는 측정값의 출현 빈도수를 y축으로 나타낸 그래프 형태

 - 분포곡선: 히스토그램에 도수의 값을 선으로 연결하여 얻어지는 곡선

 

# iris 데이터 셋 

#1  데이터 셋 가져오기

data(iris)
names(iris)
str(iris)
head(iris)

names() 함수: 컬럼명 보기

 

 

 

#2 꽃받침 길이(Sepal.Length) 컬럼으로 히스토그램 시각화

summary(iris$Sepal.Length)

# Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
# 4.300   5.100   5.800   5.843   6.400   7.900 

hist(iris$Sepal.Length, xlab = "iris$Sepal.Length", col = "darkgreen", 

     main = "iris 꽃받침길이 Histogram", xlim = c(4.3,7.9))

xlab : x축 이름

xlim : x축 레이블 범위 (summary로 확인한 min 값과 max값 기준)

 

 

 

#3  꽃받침 너비(Sepal.Width)컬럼으로 히스토그램 시각화

summary(iris$Sepal.Width)

Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
2.000   2.800   3.000   3.057   3.300   4.400 

hist(iris$Sepal.Width, xlab = "iris$Sepal.Width", col = "mistyrose", 
     main = "iris 꽃받침길이 Histogram", xlim = c(2.0,4.5))



 

 

 

#4  빈도수에 의해서 히스토그램 그리기

par(mfrow = c(1, 2))

hist(iris$Sepal.Width, xlab = "iris$Sepal.Width", 
     col = "darkgreen", 
     main = "iris 꽃받침 너비 Histogram: 빈도수", xlim = c(2.0, 4.5))

 

 

#5  확률 밀도에 의해서 히스토그램 그리기

hist(iris$Sepal.Width, xlab = "iris.$Sepal.Width", 
     col = "mistyrose", freq = F, 
     main = "iris 꽃받침 너비 Histogram: 확률 밀도", xlim = c(2.0, 4.5))

freq 인수의 기본값은 NULL , 
TRUE 인 경우 히스토그램 막대가 각 구간별 데이터의 개수(빈도)로 그려진다.
FALSE 인 경우 히스토그램의 전체 면적이 1이 되도록 각 구간의 확률 밀도가 그려진다.

 

cf ) probability 인수는 
TRUE 인 경우히스토그램의 전체 면적이 1이 되도록 각 구간의 확률 밀도가 그려진다.
FALSE 인 경우 히스토그램 막대가 각 구간별 데이터의 개수(빈도)로 그려진다.

 

 

#4,5 결과 시각화

 

 

#6 밀도를 기준으로 line 추가하기

lines(density(iris$Sepal.Width), col = "red")

 

오른쪽 그래프는 ‘freq=F’속성에 의해 계급에 대한 밀도(Density)를 y축으로 표현한 결과 density()와 lines()함수에 의해서 밀도 그래프에 분포곡선이 그려짐

 

 

 

#7  정규분포 추정 곡선 나타내기

정규분포는 평균값을 중앙으로 좌우대칭인 종 모양(Bell-shape)을 이루고 있다

 

#8 계급을 밀도로 표현한 히스토그램 시각화

par(mfrow = c(1,1))
hist(iris$Sepal.Width, xlab = "iris$Sepal.Width", col = "mistyrose",
     freq = F , main = "iris 꽃받침 너비 Histiogram", xlim = c(2.0,4.5))



 

 

 

#9  히스토그램에 밀도를 기준으로 분포곡선 추가

lines(density(iris$Sepal.Width), col = "red")



 

 

#10 히스토그램에 정규분포 추정 곡선 추가

x <- seq(2.0, 4.5, 0.1)
curve(dnorm(x, mean = mean(iris$Sepal.Width),
            sd = sd(iris$Sepal.Width)),
      col = "blue", add = T)



curve()함수와 dnorm()함수를 이용하여 정규분포의 곡선 추가

curve() 함수 : 간격에 대해 함수에 해당하는 곡선을 그립니다.변수에도 표현식을 플로팅할 수 있습니다

dnorm() 함수 : 밀도, 분포 함수, 분위수 함수 및 랜덤 평균이 같고 표준 편차가 같은 정규 분포에 대한 생성

 

 

반응형
Comments