부트스트래핑 소개

R에서의 표본추출

Richie Cotton

Data Evangelist at DataCamp

복원 여부

비복원추출

카지노 테이블 위 트럼프 카드.

복원추출("재표본추출")

네 개의 굴러가는 주사위.

R에서의 표본추출

비복원 단순무작위표본추출

모수

행과 열로 배열된 커피콩.

표본

행과 열로 배열된 커피콩. 대부분은 회색 처리됨.

R에서의 표본추출

복원 단순무작위표본추출

모수

행과 열로 배열된 커피콩.

표본

무작위로 뽑은 커피콩 표본. 일부는 중복됨.

R에서의 표본추출

왜 복원추출을 하나요?

  • coffee_ratings 데이터를 모든 커피로 이뤄진 더 큰 모수의 표본으로 봅니다.
  • 표본의 각 커피는 표본에는 없지만 모수에는 존재하는 여러 커피를 대표한다고 생각합니다.
  • 복원추출은 이러한 그룹의 다른 구성원을 표본에 포함하는 대리 방법입니다.
R에서의 표본추출

커피 데이터 준비

coffee_focus <- coffee_ratings %>%
  select(variety, country_of_origin, flavor) %>%
  rowid_to_column()
glimpse(coffee_focus)
Rows: 1,338
Columns: 4
$ rowid             <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, ...
$ variety           <chr> NA, "Other", "Bourbon", NA, "Other", NA, "Other", N...
$ country_of_origin <chr> "Ethiopia", "Ethiopia", "Guatemala", "Ethiopia", "E...
$ flavor            <dbl> 8.83, 8.67, 8.50, 8.58, 8.50, 8.42, 8.50, 8.33, 8.6...
R에서의 표본추출

slice_sample()로 재표본추출

coffee_resamp <- coffee_focus %>%
  slice_sample(prop = 1, replace = TRUE)
# A tibble: 1,338 x 4
   rowid variety country_of_origin flavor
   <int> <chr>   <chr>              <dbl>
 1  1253 Bourbon Guatemala           6.92
 2   186 Caturra Colombia            7.58
 3  1185 Bourbon Guatemala           7.42
 4  1273 NA      Philippines         6.5 
 5  1042 Caturra Honduras            7.33
 6   195 Caturra Guatemala           7.75
 7  1219 Typica  Mexico              7   
 8   952 Caturra Honduras            7.5 
 9    41 Caturra Thailand            8.33
10   460 Caturra Honduras            7.67
# ... with 1,328 more rows
R에서의 표본추출

중복된 커피들

coffee_resamp %>% 
  count(rowid, sort = TRUE)
# A tibble: 844 x 2
   rowid     n
   <int> <int>
 1   704     5
 2   913     5
 3  1070     5
 4    16     4
 5   180     4
 6   230     4
 7   234     4
 8   342     4
 9   354     4
10   423     4
# ... with 834 more rows
R에서의 표본추출

누락된 커피들

coffee_resamp %>% 
  summarize(
    coffees_included = n_distinct(rowid),
    coffees_not_included = n() - coffees_included
  )
# A tibble: 1 x 2
  coffees_included coffees_not_included
             <int>                <int>
1              844                  494
R에서의 표본추출

부트스트래핑

모수에서 표본을 뽑는 것의 반대입니다.

표본추출: 모수에서 더 작은 표본으로 이동.

부트스트래핑: 표본에서 이론적 모수를 구축.

부트스트래핑 사용 사례

  • 단일 표본로 표본추출 변동성 이해.

카우보이 부츠.

R에서의 표본추출

부트스트래핑 절차

  1. 원표본과 같은 크기로 재표본을 만듭니다.
  2. 이 부트스트랩 표본에 대해 관심 통계를 계산합니다.
  3. 1~2단계를 여러 번 반복합니다.

얻은 통계를 부트스트랩 통계라 하고, 그 변동성을 보기 위한 분포를 부트스트랩 분포라 합니다.

R에서의 표본추출

커피 평균 풍미 부트스트래핑

# Step 3. Repeat many times
mean_flavors_1000 <- replicate(
  n = 1000,
  expr = {
    coffee_focus %>%
      # Step 1. Resample
      slice_sample(prop = 1, replace = TRUE) %>%
      # Step 2. Calculate statistic
      summarize(mean_flavor = mean(flavor, na.rm = TRUE)) %>% 
      pull(mean_flavor)
  })
R에서의 표본추출

부트스트랩 분포 히스토그램

bootstrap_distn <- tibble(
  resample_mean = mean_flavors_1000
)
ggplot(bootstrap_distn, aes(resample_mean)) +
  geom_histogram(binwidth = 0.0025)

표본평균의 부트스트랩 분포 히스토그램.

R에서의 표본추출

연습해 봅시다!

R에서의 표본추출

Preparing Video For Download...