LG DX DATA SCHOOL

12/30 기술 통계학 + R

getfeelingsfrom 2025. 12. 30. 16:36

빅데이터 = 대량의 데이터 분석을 통해 일반적으로는 볼 수 없었던 새로운 사실, 패턴 법칙을 발견하여 새로운 비즈니스 가치를 창출하는 기법 

 

기술통계학 

  • 주어진 자료에서 합계나 평균과 같이 필요한 정보를 계산하는 등 자료를 수집, 정리, 요약하는 통계 기법
  • 평균, 표준편차, 중위수, 최빈값, 그래프, 왜도, 첨도 등을 구하는 것을 의미
  • 분석의 초기 단계에서 데이터 분포의 특징을 파악하려는 목적으로 주로 산출
  • 양적 자료: 자료 그 자체가 숫자와 일대일로 대응 
    • 연속형 자료 : 일정구간의 실수 값을 모두 취할 수 있는 자료
    • 이산형 자료 : 정수 값을 취하는 자료 
  • 질적 자료
    • 명목형 자료: 구분을 위해 숫자를 대응시킨 자료 (남->1, 여->0)
    • 순서형 자료 : 범주들이 순서의 개념을 가지는 자료

 

1) 기초 통계량 

  • 평균(Mean)
    • 자료를 모두 더한 후 자료 개수로 나눈 값
    • 데이터의 중심을 알고 싶을 때
    • 전부 같은 가중치를 두지만 이상 값에 민감한 단점 => 중위수로 보완
    • 이상치가 있으면 설명력 떨어짐 : 데이터 확인한 후 평균, 중위수 등등으로 선택하여 구함 
    • 평균이 의미가 있으려면 정규성이 있어야 함 => 정규분포 만족 필요
    • 표본 평균= 표본조사를 통해 얻은 n개의 데이터가 𝑋1, 𝑋2, … … , 𝑋𝑛일 때 표본에 대한 평균
    • 모평균(  𝜇(뮤) )= 모집단 𝑋1, 𝑋2, … … , 𝑋𝑛에 대한 평균
  • 중위수(Median)
    •  모든 데이터 값을 크기 순서로 오름차순 정렬하였을 때 중앙에 위치한 데이터 값으로 중앙값
    • 특이값(이상치)에 영향을 받지 않음 (평균과 다른 점) 
    • 데이터값의 수가 홀수일 경우에는 중위수가 하나가 되지만 데이터값의 수가 짝수일 경우에는 중앙에 위치한 두개의 값을 평균 으로 하여 중위수를 구함
  • 최빈값(Mode)
    • 데이터 값중에서 빈도수가 가장 높은 데이터 값
  • 범위(range)
    • 데이터 값 중에서 최대 데이터값(max)과 최소데이터값(Min) 사이의 차이
  • 분산(Variance)
    • 데이터가 평균으로부터 흩어진 정보를 나타내는 기초 통계량
    • 평균값이 같더라도 분산이 다를 수 있으므로 분산 확인 필요
  • 편차
    • 각 변수들이 평균과 얼마나 떨어져 있는 지를 나타낸다.(편차 = 관측값 – 평균)
    • 분산과 편차는 퍼진 정도를 나타내는 척도이 며, 관측값이 중심값에서 얼마나 떨어져 있는 지를 알기 위한 것
  • 표준편차(Standard Deviation)

    • 표준 편차는 분산에 양의 제곱근을 취한 값
    • 퍼진 정도의 절대적인 값
    • 평균적 차이 
  • 평균의 표준 오차
    • 표본 평균의 표본 추출 분포에 대한 표준 편차
    • 모집단으로부터 수 많은 표본들을 추출한 후, 각 표본들에 대한 평균을 구하고, 각 평균들에 대한 전체 평균을 다시 구한 값으 로 각 평균들이 전체 평균으로부터 평균적으로 얼마나 떨어져 있는지를 나타냄
  • 변동계수(CV) : 상대 표준편차
    • 표준편차/평균 
    • 평균값이 다른 두 표본집단을 비교할 때나, 단위가 다른 두 데이터를 비교할 때 표준편차로 비교하기에는 한쪽이 불리하므로 이때 변동 계수를 이용
    • 변동계수 값이 크면 데이터의 흩어진 정도가 상대적으로 크다라는 의미
    • 표준편차: 평균에서 들쑥날쑥함을 보기위한 절대적 지표 (단위가 있음)
    • 변동계수: 상대적인 들쑥날쑥함을 보기 위한 지표(단위가 없음)
    • 예 )  A는 평균3시간 공부를 하고 표준 편차는 0.5였다. B는 평균 6시간을 공부하고 표준편차는 0.8 이었다먼 과연 어느 학생이 꾸준히 공부하였을까 
      • A변동 계수 = 0.5/3 = 0.167
      • B변동 계수 = 0.8/6 = 0.133
      • 변동계수가 작은 B가 더 꾸준히 공부함
  • 왜도 
    • 자료의 분포가 정규분포(좌우 대칭)에서 얼마나 비대칭적인지를 나타내는 지표
    • 분포가 한쪽으로 치우쳐 있으면 왜도가 존재
    • 정규분포처럼 완전히 대칭이면 왜도 = 0
    • 양의 왜도 (Right-skewed, 왜도 > 0)
      • 오른쪽 꼬리가 김
      • 큰 값(이상치)이 오른쪽에 있음
      • 분포의 중심이 왼쪽에 몰려 있음
      • 최빈값 < 중앙값 < 평균
      • 소득 분포
      • 시험 점수 중 소수만 매우 높은 경우
      • Ex) 1,1,2,2,2,4,5
    • 음의 왜도 (Left-skewed, 왜도 < 0)
      • 왼쪽 꼬리가 김
      • 작은 값(이상치)이 왼쪽에 있음
      • 분포의 중심이 오른쪽에 몰려 있음
      • 평균 < 중앙값 < 최빈값
      • 대부분 만점에 가까운 시험 점수
    • 왜도 = 0 (대칭 분포)
      • 정규분포 형태
      • 좌우 대칭
      • 평균 = 중앙값 = 최빈값
    • 통계학의 검정의 경우, 정규성을 가정으로 하기에 왜도값 ↑ 자료 →  자료 변환을 통해 대칭형태로 변환 필요
      • 오른쪽으로 치우쳐진 것은 로그나 루트를 씌워서 큰 차이를 좁힐 수 있음
      • 왼쪽으로 치우쳐진 경우 제곱이나 세제곱을 하여 모여 있는 것을 펼쳐줄 수 있음 
  •  첨도(Kurtosis)
    • 분포가 중심에서 얼마나 뾰족한지, 그리고 꼬리가 얼마나 두꺼운지를 나타내는 지표
    • 4제곱(moment) 을 사용해 계산
    • 평균에서 멀어질수록 값이 훨씬 크게 반영
    • 꼬리(tail) 의 영향이 매우 큼
    • 첨도 = 0 : 정규분포 정도의 뾰족함
    • 첨도 > 0 : 정규분포보다 뾰족한 분포 양쪽의 꼬리가 두꺼운 분포
    • 첨도 < 0 :  정규분포보다 납작한 분포 양쪽 꼬리가 얇은 분포
  • 사분위수 범위(IQR, InterQuartile Range)
    • 사분위수 범위는 자료들의 중간 50%에 포함되는 자료의 산포도를 나타냄
    • 이상치의 영향을 줄이기 위해 사분위수를 사용
    • IQR = Q3 – Q1 
    • 이상치판별 방법 중 하나로 사용
    • 보통 이상치 = Q1-1.5IQR보다 작거나 Q3+1.5IQR보다 큰 관측치
    • 극단 이상치 =  Q1-3IQR보다 작거나 Q3+3IQR보다 큰 관측치
      box plot
    • Box Plot
      • 많은 데이터를 그림을 이용하여 집합의 범위와 중앙값을 빠르게 확인 가능
      • 통계적으로 이상값이 있는지 빠르게 확인이 가능한 시각화 기법
      • 사분위수 범위는 자료들의 중간 50%에 포함되는 자료의 산포도를 나타냄

 

도수분포표

 

추정(추론)통계학

  • 수집된 자료를 이용해 대상 집단(모집단)에 대한 의사결정을 하는 것으로, 표본을 통해 모집단을 추정하는 통계 기법
  • 기술 통계를 활용한 추론
  • 모수 추정 : 표본 집단으로부터 모집단의 특성인 모수(평균, 분산)을 분석하여 모집단을 추론
  • 가설검정 : 대상 집단에 대해 특정한 가설을 설정 -> 그 가설이 옳은지 그른지에 대한 채택 여부를 결정하는 방법론 
  • 예측 : 미래의 불확실성을 해결해 효율적인 의사결정을 하기 위해 활용 
    • 회귀분석 
    • 시계열 분석 .. 

 

확률

: 특정 사건이 일어날 가능성의 척도 = 어떤 일이 일어날 가능

  • 통계분석이란 특정한 집단이나 불확실한 현상을 대상으로 자료를 수집해
  • 대상 집단에 대한 정보를 구하고,
  • 적절한 통계 분석 방법 을 이용해 의사결정을 하는 과정
  • 통계학에서는 통계적 추론이라고 함
  • 추정 통계학에서는 확률을 기반으로 추론

 

 

확률 변수 

  • 특정 값이 나타날 가능성이 확률적으로 주어지는 변수 
  • 확률분포표나 확률분포도가 나오기 위해서는
    • x값은 확률 변수,
    • y값은 x에 대응하는 확률 값을 가져야 함
    • 정의역(x값)이 표본 공간(=확률변수), 치역이 실수값(0<y<1)
  • 확률 변수는 매핑이 되는 y값을 가져야 함
  • 동전 던지는 예시) X=확률변수, x는 확률변수가 가질 수 있는 값 

확률 분포표 / 확률분포도

 

정규분포

  • 종모양의 형태
    • 양 끝이 아주 느린 속도로 감소하지만,
    • 축에 닿지 않고 - ∞와 ∞까지 계속됨
  • 평균을 중심으로 좌우대칭
  • 평균 주변에 많이 몰려 있으며(중앙에 집중) 양 끝으로 갈수록 줄어 듦
  • 평균과 표준편차로 분포의 모양을 결정함
    • 정규분포의 모수는 평균 𝜇와 표준편차 𝜎(분산 𝜎 2 )로, 𝑁(𝜇, 𝜎 2 )으로 나타냄
  • x= 확률변수, y= 확률변수에 대응되는 확률 값 
  • 정규 분포일 때 평균이 의미 있는 것 ! !
  • n 이 충분히 크다면 이산형이 아닌 연속형처럼 다루는 것이 가능
  • 유의수준 : 
    • “이 정도 확률이면 우연이라고 보지 않겠다”라고 정해 놓은 기준
    • 기각 영역의 넓이
    • 정규분포 양쪽 꼬리에 위치
  • 신뢰도(신뢰수준, Confidence Level)
    • “모수가 이 구간 안에 들어 있을 것이라고 얼마나 믿는가”
    • 신뢰구간의 넓이
    • 정규분포 가운데 영역

 

R

ctrl + l : 밑에 결과 지워짐 

ctrl +enter : 실행 

 

summary()

summary(chickwts)

기술 통계 요약을 한 번에 보여줌

  • weight (연속형 변수)
    • Min. : 최소값
    • 1st Qu. : 1사분위수 (하위 25%)
    • Median : 중앙값
    • Mean : 평균
    • 3rd Qu. : 3사분위수 (상위 25%)
    • Max. : 최대값
  • feed (범주형 변수, factor)
    • 각 사료 종류별 관측치 개수(빈도)
  • weight → 분포의 중심과 퍼짐을 빠르게 파악
  • feed → 각 사료 그룹에 병아리가 몇 마리 있는지 확인
  • 통계 분석 전에 데이터 전체 구조와 분포를 빠르게 훑는 용도

head()

head(chickwts) # structure

 

앞부분 6행만 출력

  • 실제 데이터가 어떤 형태로 생겼는지
  • 값이 정상적으로 들어가 있는지
  • 변수 이름과 값의 예시 확인

데이터를 처음 불러왔을 때 샘플 미리보기 용도로 가장 많이 사용

 

str()

str(chickwts)

 

데이터 구조(structure) 를 보여줌

  • 전체 행(row) 수와 열(column) 수
  • 각 변수의 자료형
    • weight: numeric (수치형)
    • feed: Factor w/ 6 levels (범주형, 수준 6개)
  • 각 변수의 실제 값 일부
  • 이 데이터가 분석 가능한 형태인지
  • 회귀/분산분석/그래프에서 어떤 변수로 써야 하는지
  • factor 변환이 필요한지 여부

결과

  • weight : num → 수치형
  • feed : Factor → 명목형 ( 평균을 구할 수 없는 데이터) 

 

 

factor

  • 원래 범주형인데 숫자로 들어와 있거나, 
  • 원래 숫자인데 범주로 써야 하는데 
  • numeric으로 들어와 있으면 변환이 필요
  • 범주형인데 numeric/character로 들어온 경우 (factor로 바꿔야 함)

    예시:
  • 학년이 1,2,3,4로 저장되어 있지만 실제로는 “집단 구분”이 목적
  • 지역코드 11, 26, 27이 숫자지만 실제로는 코드(라벨)
  • 설문 응답 “1~5”가 점수처럼 보이지만 실은 리커트(순서형)로 다뤄야 할 때
  • 이런 걸 factor로 바꾸지 않으면:
  • 모델이 “숫자 크기/기울기”로 해석해버림 (1이 2보다 작다를 ‘수량’처럼 처리)
  • 회귀에서 연속형 predictor로 들어가서 결과가 왜곡됨

 

chickwts$weight

 

  • chickwts : 데이터프레임(data.frame)
  • $ : 열(column) 선택 연산자
  • weight : 열 이름
  • chickwts 데이터프레임에서 weight 변수만 꺼낸다는 의미

 

시각화 

summary(chickwts) 
head(chickwts)
str(chickwts)

boxplot(weight ~ feed, data = chickwts,
        col = rainbow(length(levels(chickwts$feed))),
        main = "Weights by Feed",
        xlab = "Feed", ylab = "Weight")

 

 

  • weight ~ feed
    • 왼쪽(weight) : 수치형 반응변수
    • 오른쪽(feed) : 범주형 설명변수(factor)
    • 의미: 사료 종류별로 체중 분포를 비교
    • 왼쪽 결과 오른쪽 변수
  • data = chickwts
    • weight, feed 변수를 chickwts 데이터프레임에서 찾으라는 의미
  • main = "Weights by Feed"
    • 그래프 제목(title)
    • 사료 종류별 체중 비교 그래프라는 의미를 명확히 전달
  • xlab = "Feed"
    • x축 라벨
    • 사료 종류가 x축에 배치됨을 명시
  • ylab = "Weight"
    • y축 라벨
    • 체중 값이 y축에 표시됨을 명시

 

 

 

색상 패키지 설치 후 사용해보기 

#install.packages("RColorBrewer")
library(RColorBrewer)
# 사료 종류별(feed) 몸무게(weight) 박스플롯
boxplot(weight ~ feed, data = chickwts,
        main = "사료 종류별 병아리 몸무게 분포",
        xlab = "사료 종류 (Feed Type)",
        ylab = "몸무게 (Weight, g)",
        col = brewer.pal(6, "Set3"), # 6가지 색상 적용
        las = 1)                 # y축 라벨을 가로로 표시
  • library(RColorBrewer)
    • RColorBrewer 패키지 로드
    • 목적:
      → 시각적으로 구분이 잘 되는 정해진 팔레트 색상 사용
  • brewer.pal(6, "Set3")
    • 6개 색상을
    • "Set3"라는 미리 정의된 팔레트에서 가져옴
  • las = 1
    • las 값 의미:
      • 0 : 기본 (축 방향과 평행)
      • 1 : 항상 가로 방향
      • 2 : 항상 세로 방향
      • 3 : 축에 수직
      • y축 눈금 숫자를 가로로 읽기 쉽게 만듦

 

 

 

 

[과제1]  data(PlantGrowth) 로 로딩하여 PlantGrowth 데이터를 분석하시오.
1) 데이터 로딩
2) 데이터 구조 파악하기
서로 다른 두 가지 처리(Treatment, t1,t2)가 식물의 무게(Yield)에 미치는 영향
대조군(ctrl)
3)  박스plot을 그려보고 그 정보를 분석하시오.
어떤 그룹이 가장 성적이 좋고, 어떤 그룹이 대조군(ctrl)보다 못한가요?

str(PlantGrowth)
summary(PlantGrowth)
library(RColorBrewer)
boxplot(weight  ~ group, data = PlantGrowth,
        main = "처리 방법에 따른 식물의 무게",
        xlab = "처리 방법 ",
        ylab = "식물의 무게",
        col = brewer.pal(3, "Set3"),
        las = 1)

  • 해당 boxplot을 살펴보면, 대조군에 비해 trt1 처리 방법은 식물의 무게가 전반적으로 낮은 반면, trt2 처리 방법은 더 높은 무게를 보이는 것을 확인할 수 있다.
  • 세 가지 처리 방법 중 trt2는 가장 높은 중앙 값을 가지고, 상위 경계값 또한 가장 큰 값을 가지므로 식물 생장에 가장 효과적인 처리 방법이라는 것을 알 수 있다.
  • 반면 trt1은 IQR 대비 상·하위 경계값의 범위가 비교적 크지만 다른 처리군과 비교했을 때 중앙값과 최소값, 최대값 모두 낮아 대조군과 trt1방법보다 효과가 떨어지는 처리 방법이라고 생각할 수 있다.

 

 

[과제2]  "비타민 C 공급원과 용량의 상호작용 분석"
데이터셋 탐색: ToothGrowth
len: 치아 길이 (연속형)
supp: 비타민 공급 방법 (OJ: 오렌지 주스, VC: 비타민 C 결정체)
dose: 투여량 (0.5, 1.0, 2.0 mg/day) - 주의: 이 변수는 숫자로 되어 있지만, 사실상 3개의 '그룹'입니다.

 

 

구조를 확인해보면 다음과 같다. 

 

박스플롯의 기본 구조: 연속형 변수 ~ 범주형 변수

  • dose는 설명변수(처리 요인 = 범주형) 
  • supp도 설명변수(범주형)
  • dose ~ supp (둘 다 요인) => 불가
  • len ~ supp (가능):
    • OJ와 VC의 전체적인 차이
    • 용량 효과는 섞여 있음 (단순 비교용)
  • len ~ dose(가능):
    • 용량별 치아 길이 박스플롯  

 

따라서 len ~ dose + supp을 통해 공급원별 + 용량별 로 나타낼 필요가 있다. 

str(ToothGrowth)
summary(ToothGrowth)
library(RColorBrewer)
boxplot(len ~ dose + supp, data = ToothGrowth,
        main = "비타민 C 공급원과 용량의 상호작용 분석",
        xlab = "용량/ 공급원",
        ylab = "치아 길이 (len)",
        col = brewer.pal(6, "Set3"),
        las = 1)

 

OJ와 VC 모두에서 용량이 증가함에 따라 중앙값이 상승하므로 투여량이 늘어날수록(0.5 < 1.0 < 2.0 순으로) 치아 길이가 증가함을 확인할 수 있다.
동일한 투여량에 대해서는 전반적으로 OJ가 VC보다 더 큰 치아 길이를 보이는 경향이 관찰된다.
특히 VC의 경우에는 투여량이 증가할수록 치아 길이가 유의하게 증가하는 경향을 보여, VC 공급원에 대해서는 치아 성장의 원인이  투여량에 크게 의존함을 알 수 있다.