단일변수 자료의 탐색

2024. 8. 29. 21:26확률 통계/R 데이터 분석

자료의 종류

자료의 특성에 따른 분류

  • 범주형 자료(질적 자료): 성별과 같이 범주로 구분할 수 있는 값들로 구성된 자료를 의미한다. 기본적으로 문자로 표기되고 대소 비교나 산술연산이 적용되지 않는다.
  • 연속형 자료(양적 자료): 크기가 있는 숫자들로 구성된 자료를 의미한다. 연속형 자료의 경우에는 대소 비교나 평균, 최댓값, 최솟값과 같은 산술연산이 가능하다.

변수의 개수에 따른 분류

  • 단일변수 자료(일변량 자료): 하나의 변수로만 이루어진 자료를 의미한다.
  • 다중변수 자료(다변량 자료): 두 개 이상의 변수로 구성된 자료를 의미한다. 
v<-c(21,20,24,31,25)
x<-matrix(v)
x
colnames(x)<-'age'
x
> x
     age
[1,]  21
[2,]  20
[3,]  24
[4,]  31
[5,]  25
  • 일변량 자료
v_age<-c(21,20,24,31,25)
v_weight<-c(62.4,67.8,56.7,72.1,67.3)
x<-cbind(v_age,v_weight)
colnames(x)<-c('age','weight')
x
> x
     age weight
[1,]  21   62.4
[2,]  20   67.8
[3,]  24   56.7
[4,]  31   72.1
[5,]  25   67.3
  • 다변량 자료

단일 변수 범주형 자료의 탐색

  • 단일 변수에 대해서 관측값들을 종류별로 개수를 세는 것을 의미한다.

도수 분포표의 작성

x<-c('A','A','A','AB','AB','AB','AB','AB','C','C','C','C')
table(x)
table(x)/length(x)
> table(x)
x
 A AB  C 
 3  5  4 

> table(x)/length(x)
x
        A        AB         C 
0.2500000 0.4166667 0.3333333
  • table: 자료의 값을 종류별로 도수분포표로 계산해 주는 함수
  • table(x)/length(x)의 경우 각각의 종류별 개수를 전체 데이터의 개수로 나눈 것을 의미한다.

막대그래프의 작성

x<-c('A','A','A','AB','AB','AB','AB','AB','C','C','C','C')
y<-table(x)
barplot(y,main="혈액형")

결과

  • 도수 분표포를 구한 값을 y에 저장해 주고 y를 사용하여서 막대그래프를 작성해 준다.
  • barplot: 막대그래프를 작성해 주는 함수

원형 그래프

x<-c('A','A','A','AB','AB','AB','AB','AB','C','C','C','C')
y<-table(x)
pie(y,main="혈액형")

결과

  • pie: 원형 그래프를 그려주는 함수

숫자로 표현된 범주형 자료

  • 숫자로 이루 이루어진 데이터도 문자형태와 동일한 방식으로 도수 분표를 계산해 준 뒤에 그래프 형식으로 출력이 가능하다.
x<-c(1,1,1,1,2,2,2,2,2,2,2,3,3,3,3,3,3)
y<-table(x)
colors<-c('green','blue','red')
names(y)<-c('A','AB','O')
barplot(y,main="혈액형", col=colors)

결과

  • colors: 색상을 벡터 형식으로 저장해 두었다가 col을 통해서 색을 지정해 준다. 
  • names: 범주화된 자료들의 이름을 각각 지정해준다.

단일변수 연속형 자료의 탐색

평균과 중앙값

  • 평균: (전체 데이터들의 합) /  (데이터의 개수)
  • 중앙값: 모든 데이터를 순차적으로 일렬로 나열하였을 때 중앙에 있는 값을 의미한다.
  • 절사 평균: 너무 큰 관측값 때문에 발생하는 오류를 완화하기 위해서 상하위 n%를 제외한 나머지 부분의 평균을 구하는 방법이다.
x<-c(60,61,62,64,67,68,69)
y<-c(x, 200)

mean(x)
mean(y)

median(x)
median(y)

mean(x, trim=0.2)
mean(y,trim=0.2)
> mean(x)
[1] 64.42857

> mean(y)
[1] 81.375

> median(x)
[1] 64

> median(y)
[1] 65.5

> mean(x, trim=0.2)
[1] 64.4

> mean(y,trim=0.2)
[1] 65.16667
  • mean: 평균값
  • median: 중앙값
  • mean(벡터, trim=n%): 평균값을 구하는 과정이지만 trim을 통해서 상하위 n%를 제외한 나머지 부분을 사용하여서 평균을 구한다.

사분위수

  • 사분위수는 전채 부분을 4등분 하하는 지점에 있는 값들을 의미한다.
  • 자료에서 4등분을 하게 되면 3개의 점이 발생하는 이를 각각 '1 사분위수(Q1)', '2 사분위수(Q2)', '3 사분위수(Q3)'로 말할 수 있다.
  • 또한 2 사분위수는 중앙값과 동일하고 자료를 4 등분하였기 때문에 25%의 자료가 존재한다.
x<-c(60,61,62,64,67,68,69,200)
quantile(x)
quantile(x,(0:10)/10)
summary(x)
> quantile(x)
    0%    25%    50%    75%   100% 
 60.00  61.75  65.50  68.25 200.00 

> quantile(x,(0:10)/10)
   0%   10%   20%   30%   40%   50%   60%   70%   80%   90%  100% 
 60.0  60.7  61.4  62.2  63.6  65.5  67.2  67.9  68.6 108.3 200.0 

> summary(x)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  60.00   61.75   65.50   81.38   68.25  200.00
  • quantile: 자료를 3 등분하여서 사분위수를 구해준다.
  • quantile(자료, (0:10)/10): 0~10의 정수를 10으로 나누어서 10%~100%로 세분화한다.
  • summary: 사분위수, 최댓값, 최솟값, 평균을 함께 출력해 준다.

산포

  • 산포: 자료에서 값들이 퍼져있는 정도를 말한다.
  • 분산: (자료의 값-평균)^2의 모든 합에 자료의 개수를 나눈 값을 의미한다.
  • 표준 편차: 분산의 제곱근
x<-c(60,61,62,64,67,68,69,200)
var(x)
sd(x)
range(x)
diff(range(x))
> var(x)
[1] 2308.554

> sd(x)
[1] 48.04741

> range(x)
[1]  60 200

> diff(range(x))
[1] 140
  • var: 분산
  • cd: 표준편차
  • range: 값의 범위(최솟값, 최댓값)
  • diff(range): 위에서 range는 최솟값과 최댓값이라고 하였고, diff는 값의 차이를 나타내기 때문에 최솟값과 최댓값의 차이를 의미한다.

히스토그램

  • 막대그래프와 비슷한 외형을 가지고 있다.
  • 연속형 자료의 분포를 나타낼 때 활용한다.
  • 예를 들어서 160~170, 170~180의 키를 가진 사람으로 나눈 다음에 그 부분에 해당하는 값을 세어서 그래프를 만드는 방식이다.
x<-cars[,2]
hist(x,
     main="histtogram in 제동거리",
     xlab="제동거리",
     ylab="빈도수",
     border = "black",
     col="green",
     las=1,
     breaks=5)

결과

  • hist: 히스토그램을 출력하기 위한 함수
  • xlab: x축의 제목
  • ylab: y축의 제목
  • border: 테두리의 색상 지정
  • las: 1인 경우에는 가로로 글씨를 배치하고 2인 경우에는 세로로 글씨를 배치한다.
  • breaks: 구간을 몇 개로 나눌지를 조절한다. 즉 숫자가 클수록 구간의 개수가 증가한다.

ex) iris를 사용한 꽃잎의 길이 히스토그램으로 표현하기

x<-iris[,3]
hist(x,
     main="꽃잎의 길이",
     xlab="꽃잎의 길이",
     ylab="개수",
     border="black",
     col="blue",
     las=1,
     breaks=7)

결과

상자 그림

  • 상자 수염 그림이라고도 하고 사분위수를 시각화하여서 그래프의 형태로 나타낸 것이다.
  • 상자 그림은 하나의 그래프로 데이터의 분포 형태를 포함한 다양한 정보를 전달하기 때문에 단일 변수 수치형 자료를 파악하는 데 많이 사용된다.

  • 보통 동그라미로 표시된 부분을 특이값, 즉 이상치라고 표현한다.
  • 박스 안의 부분은 보통 전체 자료의 50%가 위치하는 부분이다.
x<-iris[,3]
boxplot(x,main="꽃잎의 길이")

결과

  • boxplot: 상자그림을 출력해 주는 함수
x<-iris[,3]
boxplot.stats(y)
$stats
[1] 60.0 61.5 65.5 68.5 69.0

$n
[1] 8

$conf
[1] 61.5897 69.4103

$out
[1] 200
  • 정확한 정보에 대해서 확인하기 위해서는 boxplot.stats를 사용한다.
  • $stats: 4분 위수에 해당하는 값을 출력한다. 차례대로 최솟값, 1 사분위수, 중앙값(2 사분위수), 3 사분위수, 최댓값이 있다.
  • $n: 자료에 있는 관측값들의 총개수를 의미한다.
  • $conf: 신뢰구간을 의미한다.
  • $out: 이상치 값을 보여준다.

그룹이 있는 자료형

boxplot(Petal.Length~Species, data=iris, main="품종별 꽃잎의 길이")

결과

  • Petal.Length~Species는 꽃잎의 길이 자료를 품종에 따라 나누어 상자그림을 그리라는 의미이다.
  • 매개변수 data를 통해서 iris 자료를 불러온다. 
cf) 한 화면에 여러 가지 그래프 출력하기
R에서는 화면을 여러 개로 분할하여 각각의 화면에 그래프를 출력할 수 있다. 
par(mfrow=c(1,3))
hist(iris[,1],
     main="Histogram of Sepal.Length",
     xlab="Sepal.Length",
     ylab="Frequency",
     col="blue",
     las=1,
     breaks=5)

hist(iris[,2],
     main="Histogram of Sepal.Width",
     xlab="Sepal.Width",
     ylab="Frequency",
     col="green",
     las=1,
     breaks=5)

hist(iris[,3],
     main="Histogram of Petal.Length",
     xlab="Petal.Length",
     ylab="Frequency",
     col="red",
     las=1,
     breaks=5)

결과

'확률 통계 > R 데이터 분석' 카테고리의 다른 글

자료의 탐색  (0) 2024.09.01
다중변수 자료의 탐색  (0) 2024.08.30
(Ch8) 조건에 맞는 데이터의 위치 찾기  (1) 2024.08.26
(Ch 7) apply함수&사용자 정의 함수  (1) 2024.08.26
(Ch 6) 반복문  (2) 2024.08.25