ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 기술통계
    R 2020. 7. 6. 17:15

    기술통계

    통계로 개념 이해하기

    기술통계

    • 데이터를 수학으로 기술하는 것

    • 수치로 특징을 말하는 이유는 정확하기 때문

    • 어떤 사실을 말할 때 높은 설득력

     

    평균(mean)

    • 모든 데이터를 끌어안고 무게중심을 지키는 평균

    {\displaystyle A={\frac {1}{n}}\sum _{k=1}^{n}a_{k}={\frac {a_{1}+a_{2}+\cdots +a_{n}}{n}}}

     

    기호( Summation)

    {\displaystyle \sum }

    의 정의는 다음과 같다.

    {\displaystyle \sum _{k=m}^{n}a_{k}=\overbrace {a_{m}+a_{m+1}+a_{m+2}+\cdots +a_{n-2}+a_{n-1}+a_{n}} ^{n-m+1}}

    • 모집답 vs 표본

    • 모평균 vs 표본평균

    • 모분산 vs 표본분산

    • 모표준편차 vs 표본표준편차

    모집단에 대한 이미지 검색결과표본평균에 대한 이미지 검색결과확률분포에 대한 이미지 검색결과

    • 기술통계에서 말하는 값들은 모두 표본에 해당하는 값

     

    아웃라이어(outlier)

    • 평균을 크게 변하게 만드는 값

    • 아웃라이어를 찾기 위한 그래프 Box Plot

    • 무조건 제거 대상이 아니라 1차적 분석대상

    • 왜 발생했는지와 데이터에 어떤 영향을 미치는 지등 파악

     

    중앙값(median)

    • outlier에 의해 데이터 대표값(평균등)이 많이 변하는 점 보완

    • [52, 52, 60, 64, 76] 중앙값 60 (n+1)/2 의 위치 값

    • [52, 52, 60, 62, 64, 76] 중앙값 61 n/2 와 (n+1)/2 의 평균값

    평균과 중앙값에 대한 이미지 검색결과

     

    img

     

    범위

    • 수치형 연속변수에서 최소값과 최대값 사이

    • 범위는 특별한 의미를 가지는 경우가 별로 없음

    • 아웃라이어등에 의해 범위가 커칠 수 있음 => 사분위범위 사용

     

    사분위범위(IQR, Interquartile Range)

    • 데이터를 25%, 50%, 75%, 100%에서 25% ~ 75% 값

    • 값은 중앙값으로 구함

    box plot에 대한 이미지 검색결과

    산포도 - 얼마나 퍼져 있는가?

    분산과 표준편차

     

    편차

    • 자료값들이 특정값으로부터 떨어진 정도를 나타내는 수치

    • 각 자료들이 평균으로부터 얼마나 떨어져있는지 그 거리(사실 '거리[거리는 양의 값만 가짐]'가 아니라 '차'입니다)를 보는 것

     

    표준편차

    • 통계량을 간단히 설정하기 위해 편차들의 대표값을 하나 설정

    • 그 편차들의 대푯값을 설정하고 이를 표준(standard)로 이용

    • 데이터들이 평균적으로 평균으로부터 떨어진 거리의 평균값

     

    구하는 방법

    • 각각의 자료값에서 특정값을 뺀 값의 절대값을 모두 더한 뒤 이의 평균을 구하는 방법 => 평균편차

    • 각각의 자료값에서 특정값을 뺀 값의 제곱을 모두 더한 뒤 이의 평균을 구하는 방법 => 분산 => 표준편차

     

    대푯값

    • 대푯값은 편차를 최소로 만드는 값

    • 평균편차 대푯값 => 중앙값

    • 표준편차 대푯값 => 평균

     

    산포도

    • 자료값들이 대푯값으로부터 떨어진 정도

    • 편차의 정의인 '자료값들이 특정값으로부터 떨어진 정도'에서 특정값 대신 대푯값을 넣으면 그것이 산포도

     

    참고 편차들의 대표값으로 평균편차를 이용하지 않는 이유 편차란 각 자료들이 평균으로부터 얼마나 떨어져있는지 그 거리를 보기 위한 것 따라서 거리공식에 대입하여 자료값들이 평균값과 얼마나 떨어져있는지 평균적인 거리를 보아야 함 그래서 피타고라스 정리를 응용하여 만들어진 유클리드 거리(Euclidean distance)공식에 대입하여 평균낸 우리가 흔히 아는 표준편차 공식을 쓰는 것

     

    표준화

    • 각각 다른 집단의 평균과 표준편차를 비교하기 위해 평균을 0으로 이동시키고 표준편차로 나주어 준다

    img

    z-점수란 무엇일까요?

    • z-점수는 자료가 평균으로부터 표준편차의 몇 배만큼 떨어져 있는지를 보여줍니다.

    https://ko.khanacademy.org/math/statistics-probability/modeling-distributions-of-data/z-scores/a/z-scores-review

     

    변동계수

    • 평균과 표준편차가 다를 때 단수 얼마나 다른지 비율 만 확인

    • 변동계수(V) = 표본표준편차(S) / 표본평규(x)

     

    ex1)

    • 몸무게 평균 63 / 표준편차 20 => 20 / 63 = 0.317

    • 키 평균 175 / 표준편차 35 => 35 / 175 = 0.2

    • 몸무게의 분포가 더 넗게 퍼져 있음

     

    ex2)

    • A기업 평균연봉 3500 / 표준편차 250 => 250 / 3500 = 0.0714

    • B기업 평균연봉 4200 / 표준편차 180 => 180 / 4200 = 0.0428

    • A기업의 연봉이 더 넗게 퍼져 있음

     

    공분산

    • 변수가 2개일때 분산(공=함께)

    • X가 커지면 Y도 커지거나 혹은 작아지거나 아니면 별 상관 없거나 등을 나타내어 주는 것

    • Cov(X,Y)

    • Cov(X, Y) > 0 X가 증가 할 때 Y도 증가

    • Cov(X, Y) < 0 X가 증가 할 때 Y는 감소

    • Cov(X, Y) = 0 공분산이 0이라면 두 변수간에는 아무런 선형관계가 없으며 두 변수는 서로 독립적인 관계

    • 두 변수가 독립적이라면 공분산은 0이 되지만, 공분산이 0이라고 해서 항상 독립적이라고 할 수 없다.

    img

     

    상관계수(Correlation)

     

    img

    • 상관계수의 절대값은 1을 넘을 수 없다.

    • 확률변수 X, Y가 독립이라면 상관계수는 0이다.

    • X와 Y가 선형적 관계라면 상관계수는 1 혹은 -1이다.

    • 양의 선형관계면 1, 음의 선형관계면 -1

     

    독립 사건

    • 사건 A가 사건 B에 영향을 주지 않는 상태(조건부 확률)

    • 주사위 A 가 1 나올 때, 동전 B (앞면) 나올 확률?

     

    배반 사건

    • 사건 A와 사건B가 동시에

    • 동전을 던저 앞면(T)이 나오면 뒷면이 나올 수 없다

    R로 기술 통계 구하기

    df <- read.csv('r-ggagi-data/example_studentlist.csv')
    head(df)
    name sex age grade absence bloodtype height weight
    김길동 남자 23 3 O 165.3 68.2
    이미린 여자 22 2 AB 170.1 53.0
    홍길동 남자 24 4 B 175.0 80.1
    김철수 남자 23 3 AB 182.1 85.7
    손세수 여자 20 1 A 168.0 49.5
    박미희 여자 21 2 O 162.0 52.0
    # 평균 구하기 - NA 제거 후
    mean(df$height, na.rm = T)

    170.035294117647

    # 중앙값 구하기
    median(df$height, na.rm = T)

    169.2

    # 범위 구하기
    range(df$height, na.rm = T)
    1. 155.2
    2. 182.1
    # 사분위 구하기
    quantile(df$height, na.rm = T)
    0%    155.2
    25%  165.3
    50%  169.2
    75%  176.1
    100% 182.1
    # IQR 구하기
    IQR(df$height, na.rm = T)

    10.8

    # 참고) IQR을 구하는 알고리즘은 여러개임
    IQR(df$height, na.rm = T, type = 7) # default
    IQR(df$height, na.rm = T, type = 5)
    IQR(df$height, na.rm = T, type = 3)

    10.8

    11.775

    13.9

    # 평균, 중앙값, Q1, Q3 한번에 보기
    summary(df$height, na.rm = T)
       Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      155.2   165.3   169.2   170.0   176.1   182.1 
    # Box Plot으로 보기 - NA 값 기본 제거함
    boxplot(df$height)

    boxplot 그래프

    # 상관계수 다루기
    cor(df$height, df$weight)

    0.664181597958861

    # 좀 더 자세한 상관 관계
    # 신뢰구간, p값 등이 나옴
    cor.test(df$height, df$weight)
        Pearson's product-moment correlation
    
    data:  df$height and df$weight
    t = 3.441, df = 15, p-value = 0.003639
    alternative hypothesis: true correlation is not equal to 0
    95 percent confidence interval:
     0.2696040 0.8677954
    sample estimates:
          cor 
    0.6641816 
    # 3개 변수 상관 계수
    cor(df[,c(3, 7, 8)])
      age height weight
    age 1.0000000 0.3450992 0.5226855
    height 0.3450992 1.0000000 0.6641816
    weight 0.5226855 0.6641816 1.0000000
    # 여러 변수 사용시의 결측치
    # use 사용 | 좀 더 자세히 지정해야 함
    df2 <- df
    df2[2,7] <- NA
    df2[4,8] <- NA
    cor(df2$height, df2$weight)

    <NA>

    # na.rm = T 사용 불가
    cor(df2$height, df2$weight, na.rm = T)
    Error in cor(df2$height, df2$weight, na.rm = T): 사용되지 않은 인자 (na.rm = T)
    Traceback:
    # use = 'complete.obs' == na.rm = T  모든 결측치 제거
    cor(df2$height, df2$weight, use = 'complete.obs')

    0.596680912660705

    # use = 'pairwise.complete.obs' 상관계수를 만든 Peason 방식, 그 Vector 만 뺌
    cor(df2$height, df2$weight, use = 'pairwise.complete.obs')

    0.596680912660705

    # use = 'everything' == na.rm = F Na 값 포함해서 처리
    cor(df2$height, df2$weight, use = 'everything')

    <NA>

    # use = 'all.obs' 계산 자체를 안함
    cor(df2$height, df2$weight, use = 'all.obs')
    Error in cor(df2$height, df2$weight, use = "all.obs"): cov/cor에 결측치들이 있습니다
    Traceback:
    
    
    1. cor(df2$height, df2$weight, use = "all.obs")
    # 분산과 공분산 구하기
    var(df$height, na.rm = T)

    61.6186764705883

    var(df$height, df$weight, na.rm = T)

    61.7906985294118

    # 동일하게 use 사용가능
    cov(df$height, df$weight, use = 'complete.obs')

    61.7906985294118

    cov(df[,c(3,7,8)], use = 'complete.obs')
      age height weight
    age 1.367647 3.168015 7.244485
    height 3.168015 61.618676 61.790699
    weight 7.244485 61.790699 140.462426
    # 표준편차
    sd(df$height, na.rm = T)

    7.84975645931696

    scale(df$height)
    -0.603240896
    0.008243043
    0.632466231
    1.536952891
    -0.259281180
    -1.023636104
    -1.889905017
    0.874511957
    1.078339937
    0.772597967
    -0.373934419
    1.269428668
    -0.998157606
    0.772597967
    -1.507727555
    -0.182845688
    -0.106410195
    # 표준화
    df_scale <- data.frame(df$height, scale(df$height), z_score=(df$height-mean(df$height))
                           /sd(df$height, na.rm = T))
    df_scale
    df.height scale.df.height. z_score
    165.3 -0.603240896 -0.603240896
    170.1 0.008243043 0.008243043
    175.0 0.632466231 0.632466231
    182.1 1.536952891 1.536952891
    168.0 -0.259281180 -0.259281180
    162.0 -1.023636104 -1.023636104
    155.2 -1.889905017 -1.889905017
    176.9 0.874511957 0.874511957
    178.5 1.078339937 1.078339937
    176.1 0.772597967 0.772597967
    167.1 -0.373934419 -0.373934419
    180.0 1.269428668 1.269428668
    162.2 -0.998157606 -0.998157606
    176.1 0.772597967 0.772597967
    158.2 -1.507727555 -1.507727555
    168.6 -0.182845688 -0.182845688
    169.2 -0.106410195 -0.106410195
    # 변동계수 - height
    sd(df$height) / mean(df$height)

    0.0461654534727697

    # 변동계수 - wehight - height 보다 더 많이 분산되어있음
    sd(df$weight) / mean(df$weight)

    0.194084035454233

     

    Chap03.html
    0.30MB

    'R' 카테고리의 다른 글

    시각화  (0) 2020.07.07
    기술통계 - 실전 예제  (0) 2020.07.07
    데이터 개념 예제로 이해하기  (0) 2020.07.06
    데이터 개념 이해하기  (0) 2020.07.02
    R 필수 설치 패키지  (0) 2020.07.02
Designed by Tistory.