Rstudio(7) 통계 분석

hyukstory 혁스토리·2020년 8월 22일
0

Rstudio

목록 보기
9/16

< 7 > 통계 분석

7-1) 기초 통계 함수

length() :자료의 개수

min() : 최소값

max() : 최대값

range() : 범위 (최대값 - 최소값)

mean() : 평균

median() : 중앙값

quantile() : 사분위수

IQR() : Inter Quantile Range (3분위 값에서 1분위 값을 뺀 값)

var() : 분산 (편차들의 제곱의 합)

sd() : 표준편차 (분산의 루트, 평균적인 편차)

summary() : 대표 기초 통계

plot() : 분포표

density() : 확률밀도

hist(x, breaks = , col= , border= ) : 히스토그램 (데이터를 구간별로 나누어 도수를 표시함으로써 특징을 보여줌)

- breaks : 구간설정 옵션
hist(iris$Sepal.Length, breaks=24)
hist(iris$Sepal.Length, breaks=seq(0,10,by=0.2))

rnorm(100, mean=0, sd=10)
plot(rnorm(100,0,10))  #분포표
plot(density(rnorm(100,0,10))) # 확률 밀도 분포표

7-2) 표본 관련 함수

fivenum() : 대표 다섯개

fivenum(1:100) #1~100 사이의 숫자 중 대표하는 다섯까지 추출

sample(x, size, replace = FALSE, prob = NULL)

- x : 배열이면 원래의 데이터, 정수이면 seq(x) 명령으로 데이터 생성
- size : 정수. 샘플 숫자
- replace : T or F 중복가능여부
- prob : 배열. 각 데이터가 선택될 수 있는 확률
sample(1:10, 5) # 단순 임의 추출 1~10 사이 중 5개 추출
sample(1:10, 5, replace = T) # 중복 허용
sample(1:10, 5, replace = T, prob = c(1,2,3,4,5,6,7,8,9,10))
# 1 ~ 10 사이 다섯개 추출 중복 허용, 가중치 부여

sampleBy(~기준변수, frac = 비율, data= 데이터 , systematic = T or F)

양이 너무 방대할 때 데이터를 축소하기 위한 작업

- systematic : 계통 추출 (첫 번째 요소는 무작위로 선정한 후 목록의 매번 n번째 요소를 표본으로 선정하는 표집방법)

install.packages("doBy")
library(doBy)

irisSample <- sampleBy(~Species, frac = 0.3, data=iris, systematic = T) ; irisSample

which.max(table()) : 빈도가 가장 높은 범주 중 첫 번째

which.min(table()) ; 빈도가 가장 낮은 범주 중 첫 번째

table(iris$Sepal.Length)
which.max(table(iris$Sepal.Length)) 
which.min(table(iris$Sepal.Length)) 

7-3) 가설 검증 관련

0가설, 귀무가설 : 변수 간의 차이가 없다.

대립가설 : 변수 간의 차이가 있다.

- 변수 간의 차이를 확인

P-Value > 0.05 이면 귀무가설, P < 0.05이면 대립가설

chisq.test() : 카이 스퀘어 테스트 (독립변수와 종속변수 둘다 범주형 범수)

fisher.test() : 피셔 테스트 (기대빈도가 5보다 작은 셀이 20% 이상인 경우)

ex)

H0 : child1 가 child2가 가지고 있는 장난감 비율에 차이가 없다. (0가설, 귀무가설)
H1 : child1 과 child2가 가지고 있는 장난감 비율에 차이가 있다. (대립가설)
child1 <- c(5,11,1)
child2 <- c(4,7,13)
Toy <- cbind(child1, child2)
rownames(Toy) <- c("car", "truck", "doll")
Toy
chisq.test(Toy)
fisher.test(Toy)

- 변수 간의 연관성을 확인

1. 상관분석 : 변수들이 서로 얼마나 밀접하게 직선적인 관계를 가지고 있는지 분석하는 통계적 기법 (두개의 연속형 변수간의 상관관계 분석))

1에 가까우면 양의 상관관계(비례)
0 : 선형의 상관관계가 아sla.
-1에 가까우면 음의 상관 관계(반비례)
cor(x, y) # 상관계수만 확인
cor.test(x, y) #상관계수, P-Value, 신뢰구간 확인

2. 회귀분석 : 한 개 또는 그 이상이 변수들(독립변수)에 대하여 다른 한 변수(종속변수) 사이의 관계를 수학적인 모형을 이용하여 설명하고 에측하는 분석기법

a) 단순선형 회귀분석 : 독립변수 1개 종속변수 1개
b) 다중선형 회귀분석 : 독립변수 2개 이상 종속 변수 1개

<통계 분석 단계>

#1. 분석을 위한 주제 선정
#2. 자료 수집
#3. 독립/종속 결정
#4. 자료 가공
#5. 툴 선택
#6. 분석
#7. 해석

3. t 검정 : 변수가 정규분포일 때 사용할 수 있는 방법, 두 그룹간 평균이 얼마나 차이나 나는지 검증하는 분석 기법

t.test(data = 데이터 세트, 변수 2 ~ 변수 1, var.equal = T)

- 변수 2 : 그룹 간 평균을 구할 수 있는 변수
- 변수 1 : 비교하고자 하는 두 그룹으로 나뉜 변수 (명목변수)
- var.equal = T : 비교할 두 집단 간의 분산이 동일하다는 가정을 전제
library(readxl)
exdata1 <- read_excel("C:/TEMP/Rstudy/data/Sample1.xlsx")
exdata1
# 성별에 따른 AMT16(16년 이용 금액)의 평균 차이를 t-test() 함수로 검증

t.test(data=exdata1, AMT16 ~ SEX, var.equal = T)

# t = -1.2681, df = 8, p-value = 0.2404
# p-value > 0.05 = 두 집단 간의 차이가 통계적으로 유의미하지 않다.
#(남녀 간의 평균 16년 카드 이용 금액에는 차이가 없다.)

Q. 통계 연습문제

문제1) mpg를 데이터프레임으로 가져오세요 (데이터 세트 이름 : mpg_diff)

mpg_diff <- as.data.frame(ggplot2::mpg)
str(mpg_diff)
head(mpg_diff)

문제2) mpg_diff의 class,cty 변수를 선택하여 class 변수가 "compact"인 자동차와 "suv"를 추출하세요.

library(dplyr)
mpg_diff_2class <- mpg_diff %>% 
  select(cty, class) %>% 
  filter( class == c("compact" , "suv"))
head(mpg_diff_2class)

문제3) class 빈도표 출력

table(mpg_diff_2class$class)

문제4) t.test() 이용하여 t검정 실시. 앞에서 추출한 mpg_diff 데이터를 이용하여 비교할 값인 cty(도시연비) 변수와 비교할 집단 class(자동차 종류)를 지정 (두 집단의 분산은 같다고 가정)

t.test(data = mpg_diff_2class, cty ~ class, var.equal = T)

t.test(data = mpg_diff_2class, cty ~ class)
profile
문돌이의 고군분투 개발 공부

0개의 댓글