Giới thiệu về bootstrapping

Lấy mẫu trong R

Richie Cotton

Data Evangelist at DataCamp

Có hay không hoàn lại

Lấy mẫu không hoàn lại

Các lá bài trên bàn casino.

Lấy mẫu có hoàn lại ("lấy mẫu lại")

Bốn con xúc xắc đang lăn.

Lấy mẫu trong R

Lấy mẫu ngẫu nhiên đơn giản không hoàn lại

Quần thể

Hạt cà phê xếp thành hàng và cột.

Mẫu

Hạt cà phê xếp thành hàng và cột, phần lớn đã làm mờ.

Lấy mẫu trong R

Lấy mẫu ngẫu nhiên đơn giản có hoàn lại

Quần thể

Hạt cà phê xếp thành hàng và cột.

Mẫu

Mẫu ngẫu nhiên các hạt cà phê, có một số phần tử trùng lặp.

Lấy mẫu trong R

Vì sao lấy mẫu có hoàn lại?

  • Xem dữ liệu coffee_ratings như một mẫu từ quần thể tất cả loại cà phê.
  • Coi mỗi cà phê trong mẫu đại diện cho nhiều cà phê khác không có trong mẫu nhưng có trong quần thể.
  • Lấy mẫu có hoàn lại là cách mô phỏng việc đưa các thành viên khác nhau của các nhóm này vào mẫu.
Lấy mẫu trong R

Chuẩn bị dữ liệu cà phê

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...
Lấy mẫu trong R

Lấy mẫu lại với 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
Lấy mẫu trong R

Cà phê lặp lại

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
Lấy mẫu trong R

Cà phê bị thiếu

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
Lấy mẫu trong R

Bootstrapping

Điều ngược lại của việc lấy mẫu từ quần thể.

Lấy mẫu: đi từ quần thể đến một mẫu nhỏ hơn.

Bootstrapping: xây dựng một quần thể lý thuyết từ mẫu của bạn.

Trường hợp dùng bootstrapping

  • Hiểu biến thiên lấy mẫu chỉ từ một mẫu.

Một chiếc ủng cao bồi.

Lấy mẫu trong R

Quy trình bootstrapping

  1. Tạo một mẫu lại cùng kích thước với mẫu gốc.
  2. Tính thống kê quan tâm cho mẫu bootstrap này.
  3. Lặp lại bước 1 và 2 nhiều lần.

Các thống kê thu được gọi là thống kê bootstrap; khi xem để đánh giá độ biến thiên sẽ tạo thành một phân phối bootstrap.

Lấy mẫu trong R

Bootstrapping vị trung bình cà phê

# Bước 3. Lặp lại nhiều lần
mean_flavors_1000 <- replicate(
  n = 1000,
  expr = {
    coffee_focus %>%
      # Bước 1. Lấy mẫu lại
      slice_sample(prop = 1, replace = TRUE) %>%
      # Bước 2. Tính thống kê
      summarize(mean_flavor = mean(flavor, na.rm = TRUE)) %>% 
      pull(mean_flavor)
  })
Lấy mẫu trong R

Histogram phân phối bootstrap

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

Biểu đồ histogram của phân phối bootstrap của trung bình mẫu.

Lấy mẫu trong R

Hãy thực hành!

Lấy mẫu trong R

Preparing Video For Download...