본문 바로가기
공부/IT-R프로그래밍

R프로그래밍 강좌 - [12] [기초통계] 기술 통계학

by 썸볼 2018. 1. 15.

1. 통계학의 종류 
(1) 기술 통계학
  - 데이터를 요약해 설명하는 통계기법이다.
  - 자료를 분석하려면 수많은 숫자와 문자의 이면에 있는 경향이나 특징을 파악해야한다.
    이를 위해 수집한 자료를 정리해 표로 나타내야 하는데 이를 기술 통계학이라 한다. 
  - 기술통계학에서는 자료정리를 표로 나타내며 자료의 제시는 그래프로 표현한다.

  1) 비율
  - 전체에서 개개의 요소가 어느 정도의 비율을 차지하는가를 보면 그 요소의 중요성이나 영향력을 알 수있다.
  - 주로 백분율로 나타낸다. 띠그래프, 누적 막대그래프, 원그래프로 항목들을 표현한다.
 
  
  ※ 띠그래프 


 
?mtcars

attach(mtcars)
par(mfrow=c(2,2))
stripchart(hp) #method="overplot" (디폴트)
stripchart(gear, method="stack", col="blue")
stripchart(gear, method="jitter")
stripchart(hp ~ gear)
par(mfrow=c(1,1))




 ※ 누적 막대그래프

counts <- table(mtcars$cyl, mtcars$gear)
counts
 
barplot(counts, col=c("blue","red","yellow"),legend=rownames(counts),xlab="Number of Gears")

 



 ※ 원그래프
    

b<- c(2,4,5,7,12,14,16)
pie(b, main="My PieChart",
    col=rainbow(length(b)),
    labels = c("Mon","Tue","Wed","Thu","Tri","Sat","Sun"))




-----------------------------------------------------------------------------------------------------------------------------------------
install.packages("plotrix")

library(plotrix)
slices <- c(10,12,4,16,8)
lbls<- c("US","UK","Australia","Germary","France")
#3차원 파이 차트
pie3D(slices,
      labels=lbls,
      explode=0.1, #조각간격
      main="Pie Chart of Countries")
 



---------------------------------------------------------------------------------------------------------------------------------------------


radial.pie(slices,labels=lbls, radlab = T)








  2)상관 관계
  - 자료의 항목이 2개 이상인 항목을 이용하면 조사항목 간의 관계를 파악할 수 있다. 
  
- 두 변량 중 한 쪽이 증가함에 따라, 다른 한 쪽이 증가 또는 감소할 때 두 변량 관계를 말한다
  - 양의 상관 : 2개의 자료항목에서 한쪽이 증가하면 다른쪽도 증가하는 관계를 양의 상관이라한다.
  - 음의 상관 : 2개의 자료항목에서 한쪽이 증가하면 다른쪽은 감소하는 관계를 음의 상관이라한다.
  - 
산포도, 상관도로 항목들을 표현한다.





  3)분포(분산)
  - 많은요소로 이루어진 자료에서 그 흩어진 상태를 정리해 표로 나타낸 것이 도수분포표이다. 그 표를 그래프로 
    나타낸것이 히스토그램이다.
  - 분산된 데이터를 비교하는 데 편리한 것이 상자 수염 그림이다.
  - 측정값을 작은 순서로 늘어 놓았을때 전체의 작은 쪽부터 25%의 값을 1사분위수, 50%의 값을 2사분위(중간값),
    75%의 값을 3사분위수라 하고 합해서 사분위수라 한다.

 ※ 히스토그램
 

bmi<- rnorm(n=1000,m=25,sd=2)
hist(bmi,freq=FALSE) #freq=FALSE는 y축을 상대도수(밀도)로 함



 
 
hist(bmi,freq = F,xlab ="Body Mass Index",main="Distribution of Body Mass Index",
     col="lightgreen", xlim=c(15,35), ylim=c(0, .20))




 

 ※ 상자 수염 그림


boxplot(mtcars$hp, ylab="HOrse Power")

f<-fivenum(mtcars$hp) #다섯-숫자요약(최솟,최댓,중앙,제1사분위,제3사분위)
text(rep(1.3,5),f,labels=c("최솟값","제1사분위수","중앙값","제3사분위수","최대값"))
 


    



 

  

 4)자료의 대표값
  - 평균값 : 자료의 데이터를 평평하게 고른 값이 평균값이다.
  - 중앙값 : 값을 크기순으로 늘어놓았을때 가장 중간에 오는 수치를 말한다.
                데이터 크기가 짝수일때는 한가운데 2개를 취하고 이를 2로 나눈 수치가 중앙값이다.
   
    1, 2, 3, 4, 5 => 3(중앙값)
    1, 2, 3, 4, 5, 6 => 3+4/2 = 7/2 = 3.5(중앙값) 
 
  
- 최댓값과 최솟값 : 자료 중 가장 큰 값과 가장 작은 값이다.
  - 최빈값 : 가장 많이 관찰된 값
  - 표준편차와 사분위수 범위 : 자료들이 퍼저 있는 정도이다.



5)편차와 분산

- 편차 : 데이터에서 평균값을 뺀 값으로 자료 속의 각 데이터가 어느 정도 평균값에서 벗어났는지를 나타낸다.
          편차의 합과 평균은 항상 0인 특성을 가진다. 이런 성질을 이용하여 자유도란 개념을 생각해 볼 수 있다.

- 자유도 : n개의 자료가 있을 때 그들의 편차 중 (n-1)개는 원하는 값을 마음대로 가질 수 있는데 이를 자유도라 한다.

  편차1 -> 10, 편차2-> 20, 편차3-> ? 일때 ? 값은 편차의 합이 0이라는 특성을 이용하여 -30을 가질수 밖에 없다.
  이처럼 편차1,편차2는 아무런 값을 가져도 되지만, 편차3은 특정한 값이 되다.
  

편차 제곱의 평균을 통계에선 분산이라 하며, 분산의 제곱근을 표준편차라 한다.

- 분산 : 흩어진 정도를 표현하는 지표이다.


6) 표준편차
- 표준편차 :  통계에서 분산의 제곱근을 표준편차라 한다.
- 평균 -> 편차(데이터-평균) -> 분산(편차 제곱의 평균) -> 표준편차(분산의 제곱근)


# 개별 관찰값과 평균과의 차이에 대한 평균(편차)
height <- c(164, 166, 168, 170, 172, 174, 176)
( height.m <- mean( height ) )
( height.dev <- height - height.m )
sum( height.dev )

-------------------------------------------------------

> height <- c(164, 166, 168, 170, 172, 174, 176)
> ( height.m <- mean( height ) ) #평균
[1] 170
> ( height.dev <- height - height.m ) #관찰값 - 평균 :편차
[1] -6 -4 -2  0  2  4  6
> sum( height.dev )  #편차의 합계는 항상 0 :편차이 특성
[1] 0


# 편차 제곱의 평균(분산)
( height.dev2 <- height.dev ^ 2 ) #편차의 제곱
sum( height.dev ^ 2 ) / length( height.dev ) #편차 제곱의 평균(분산) 
mean( height.dev ^ 2 ) #편차 제곱의 평균(분산)
--------------------------------------------------------
> ( height.dev2 <- height.dev ^ 2 )
[1] 36 16  4  0  4 16 36
> sum( height.dev ^ 2 ) / length( height.dev )
[1] 16
> mean( height.dev ^ 2 )
[1] 16
 
 
표준편차(분산의 제곱근)
sqrt( mean( height.dev ^ 2 ) ) #분산의 제곱근 (표준편차)
-----------------------------------------------------------
> sqrt( mean( height.dev ^ 2 ) )
[1] 4
 
 
# R 함수를 이용한 분산과 표준편차
var( height )
sd( height )
-------------------------------------------------------------

> var( height )

[1] 18.66667
> sd( height )
[1] 4.320494


※ 위의 편차제곱의 평균(분산)값과 R의 var()의 분산 결과값이 다르다. 이유는,
   R에서 var()의 분산계산은 모집단의 특성을 유추하는 표본의 특성이 갖춰야 할 중요한 성질을 만족하기 위해 분산(or 표준편차)의 계산에서
   표본의 갯수가 아닌 자유도로 나누기 때문이다. n이 아닌 (n-1)로 나누었다.

- 표준편차의 크기비교를 통해 자료의 퍼진 정도를 비교할 수 있다.
- 두 자료에서 표준편차가 작은 자료(점선)는 평균을 중심으로 표준편차가 큰 경우보다 몰려 있고 높이가 높은 반면,
  표준편차가 큰 자료(실선)가 평균을 중심으로 퍼진 정도가 더 크다 (= 자료의 변동 폭이 더 크다)






7) 변동계수

- 앞서 두자료의 단위가 동일하고 평균이 같은 경우이기에 직접 비교가 가능하지만, 두자료의 단위가 다르거나 평균이 다른 자료들의
  퍼진 정도를 비교할 경우 변동계수를 사용한다.
- 평균과 표준편차가 서로 다른 두 데이터를 비교하기 위해 만들어 진 개념이다. (예:키,몸무게 예: 커피, 주스 판매량)
- 변동계수는 평균에 대한 표준편차의 비율로서 변동계수가 클수록, 즉 표준편차가 표본평균에 비해 클수록 자료의 퍼진 정도가 더 
  크다고 한다.

- 변동 계수(coefficient of variation, C.V.)는 표준 편차()를 산술 평균(
)으로 나눈 것이다
 
     
- 변동계수 구하기
  커피 판매량과 주스판매량 자료로 부터 표준편차를 구하고, 어떤 음료가 판매량의 변동이 더 큰지 알아보기 위해 변동계수를 구한다.


# 데이터에 결측치가 포함되어 있을 경우 R NA에 대응시킬 값을 지정한다.
# 기본값은 "NA", "na"로 저장된 문자열들은 R NA로 저장된다. - na.strings="na"
ranicafe <- read.csv("./data/cafedata.csv", header=T, na.strings="na", stringsAsFactors=FALSE )
ranicafe <- na.omit(ranicafe)
str(ranicafe)
# 변동계수
rc <- ranicafe$Coffees
rj <- ranicafe$Juices
( rc.m <- mean( rc ) )
( rc.sd <- sd( rc ) )
( rj.m <- mean( rj ))
( rj.sd <- sd( rj ) )
( rc.cv <- round( rc.sd / rc.m, 3) )
( rj.cv <- round( rj.sd / rj.m, 3) )

-----------------------------------------------------------
> ( rc.m <- mean( rc ) )
[1] 21.51064
> ( rc.sd <- sd( rc ) )
[1] 11.08048
> ( rj.m <- mean( rj ))
[1] 4.93617
> ( rj.sd <- sd( rj ) )
[1] 3.703138
> ( rc.cv <- round( rc.sd / rc.m, 3) )
[1] 0.515
> ( rj.cv <- round( rj.sd / rj.m, 3) )
[1] 0.75

- 위내용은 주스판매량의 변동계수가 커피판매량의 변동계수보다 크다.



8) 표준화 

기준이 다른 데이터를 비교하기 위해서 표준화를 한다.
- 예를 들어 A대학에 모든 학생의 토익점수와 토플점수에 대한 두 시험을 비교하려고 할대 하나는 총점이 990이고
  하나는 120점이기 때문에 두 시험을 비교하기 쉽지 않다.
- 이때 비교하기 위한 방법이 두 시험의 점수를 표준화 시키는 것이다.
- 표준화 하는 방법은 평균을 0으로 이동하여 모든 값도 같이 움직이면서 0을 기준으로 데이터들이 위치하게 된다.
  그다음 각각의 값을 표준편차로 나눠준다. 그러면 표준편차는 1이 된다.
이렇게 평균이 0, 표준편차가 1로 만드는 것을 표준화라 부른다.
- 만점이 서로 달라 평균이 전혀 다른 두 시험을 비교하고 싶을 때 두 데이터를 표준화 하면 두 데이터 모두 평균은 0이 
  되며 서로 달랐던 표준편차는 1이 되기 때문에 서로 비교가 가능해진다.

 
-z 점수 표준화 : (특정값-평균)/표준편차

- 모든 데이터의 원소에 상응하는 z점수를 구할때  R에서 scale함수
(벡터,행렬,데이터프레임 에서 작동함)를 사용한다.

#붓꽃의 꽃받침 길이의 z점수(표준화) 구하기

scale(iris$Sepal.Length)

             :
             :


[141,]  1.03453895
[142,]  1.27606556
[143,] -0.05233076
[144,]  1.15530226
[145,]  1.03453895
[146,]  1.03453895
[147,]  0.55148575
[148,]  0.79301235
[149,]  0.43072244
[150,]  0.06843254
attr(,"scaled:center")
[1] 5.843333
attr(,"scaled:scale")
[1] 0.8280661

- 위의 center는 평균, scale은 표준편차를 나나타내다.
- 특정값을 정규화 하려면 다음과 같이 벡터화된 연산을 사용한다.

> iris$Sepal.Length[150]
[1] 5.9
> (5.9-mean(iris$Sepal.Length))/sd(iris$Sepal.Length)
[1] 0.06843254




(2) summary 함수 
- summary함수는 데이터의 요약된 통계정보( 벡터,  행렬, 요인, 데이터 프레임등에 대한 유용한 통계량)를 보여준다.

- iris는 붓꽃의 3가지 종(setosa, versicolor, virginica)에 대해 꽃받침(sepal)과 꽃잎(petal)의 길이를 정리한 데이터다.
  R에 기본으로 내장되어 있고, 이해하기 쉬우며 크기가 작은 데이터다. 


> summary(iris)

  Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
 Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
 1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
 Median :5.800   Median :3.000   Median :4.350   Median :1.300  
 Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
 3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
 Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
       Species  
 setosa    :50  
 versicolor:50  
 virginica :50  

- 벡터 요약: 사분위수, 중앙값, 평균
- 행렬 요약: 열 단위로 표시
- 요인 요약: 수준별 도수 표시
- 데이터 프레임 요약: 기능(벡터, 행렬, 요인)을 모두 사용 가능

 lapply(x,fun,..) : list apply, 리스트에 지정한 함수를 적용
   x : 대상 리스트 객체
   fun:적용할 함수명
   ..:함수에서 사용할 인수

> lapply(as.list(iris),summary)
$Sepal.Length
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  4.300   5.100   5.800   5.843   6.400   7.900 
 
$Sepal.Width
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  2.000   2.800   3.000   3.057   3.300   4.400 
 
$Petal.Length
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  1.000   1.600   4.350   3.758   5.100   6.900 
 
$Petal.Width
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  0.100   0.300   1.300   1.199   1.800   2.500 
 
$Species
    setosa versicolor  virginica 
        50         50         50 


댓글