본문 바로가기

R

R - 샘플링(sampling)

샘플링 : 데이터가 너무 큰 경우 분석 시간이 많이 걸릴때, 일부의 데이터만 추출하여 대략의 결과를 미리 확인할수 있다.
1) 비복원 추출 : 한번 선택된 데이터는 제외
2) 복원 추출 : 한번 선택된 데이터 포함

 

#복원 추출
x <- 1:100
y <- sample(x,size=10,replace=TRUE)

y

#비복원 추출

x <- 1:100

y <- sample(x,size=10,replace=FALSE)

y

# iris 데이터에서 50개를 임의로 추출하여 idx 데이터에 저장하기 
idx <- sample(1:nrow(iris),size=50,replace=F)
idx #50개 임의의 행의 번호 
iris50 <- iris[idx,]
iris50

 

#set.seed() : 샘플링시 유추할 수 있는 데이터 값 필요한 경우 / 샘플링 값 고정 / sample 실행전마다 반복 실행해야 됨  
set.seed(100) 
sample(1:20,size=5)

 

# carData 패키지에 KosteckiDillon 데이터를 이용한 연습
str(KosteckiDillon)

# 전체 데이터의 평균 치료일수(dos) 조회하기
mean.dos <- mean(KosteckiDillon$dos)
mean.dos

# 전체 관측값의 10%, 20%, 30%, 40%, 50%를 샘플링 했을 때 평균 치료일수의 평균을 전체 평균과 비교하기
for(rate in (1:5)*0.1){ 
  set.seed(100) 
  idx <- sample(nrow(KosteckiDillon),nrow(KosteckiDillon)*rate)
  sam.data <- KosteckiDillon[idx,'dos']
  tmp.mean <- mean(sam.data)
  cat('전체 평균 :',mean.dos,'샘플링 비율:',rate,'샘플링 평균:',tmp.mean,
      '차이 :',mean.dos-tmp.mean,'\n')
}

  

* nrow(KosteckiDillon) : 행의 수

* nrow(KosteckiDillon)*rate : 샘플링 갯수

* mean(sam.data) 평균 치료일수의 평균 

 

 

'R' 카테고리의 다른 글

R - treemap (나무지도)  (0) 2021.06.01
R - 조합, 집계  (0) 2021.05.31
R - 정렬 (sort, order)  (0) 2021.05.31
R - 결측값 처리  (0) 2021.05.28
R - attach/detach 함수  (0) 2021.05.28