library(tidyverse)
library(openintro)
library(infer)

Getting started

us_adults <- tibble(climate_change_affects = c(rep("Yes", 62000), rep("No", 38000)))
ggplot(us_adults, aes(x = climate_change_affects)) +
  geom_bar() +
  labs(
    x = "", y = "",
    title = "Do you think climate change is affecting your local community?"
  ) +
  coord_flip()

us_adults %>%
  count(climate_change_affects) %>%
   mutate(p = n/sum(n))
## # A tibble: 2 × 3
##   climate_change_affects     n     p
##   <chr>                  <int> <dbl>
## 1 No                     38000  0.38
## 2 Yes                    62000  0.62
n <- 60
samp <- us_adults %>%
  sample_n(size = n)

Confidence levels

samp %>%
  specify(response = climate_change_affects, success = "Yes") %>%
  generate(reps = 1000, type = "bootstrap") %>%
  calculate(stat = "prop") %>%
  get_ci(level = 0.95)
## # A tibble: 1 × 2
##   lower_ci upper_ci
##      <dbl>    <dbl>
## 1    0.533    0.767
# Question responses:
# Stating that the confidence interval is 95% means that there is a 95% chance that the true proportion is contained within the interval.
# Given that my confidence interval ranges in between 0.433 and 0.683, the true population proportion of 0.62 is contained within the interval.
# I would expect 95% of the intervals to capture the true population proportion, as it is a 95% confidence interval. This makes it reasonable to assume that given a large enough amount of opportunities, 95% of the intervals generated will contain the true proportion.
# C:/Users/emmap/AppData/Local/Temp/Untitled.png
# 47 out of 50 generated intervals successfully capture the true proportion, which is equivalent to around 94%. It is not exactly equal to the confidence level, but this is likely because 50 is a relatively small amount of intervals to generate. A larger amount such as 100 or 100 would likely have ended up being closer to the confidence level.

More practice

#Question responses
# Given a confidence interval of 0.96, I would expect it to be wider because a greater amount of its intervals would be accurately capturing the proportion. In order to increase the likelihood of this occurring, the average interval would have to contain more values.
samp %>%
  specify(response = climate_change_affects, success = "Yes") %>%
  generate(reps = 1000, type = "bootstrap") %>%
  calculate(stat = "prop") %>%
  get_ci(level = 0.99)
## # A tibble: 1 × 2
##   lower_ci upper_ci
##      <dbl>    <dbl>
## 1    0.483    0.800
# I am 99% confident that between 38.3% and 73.3% of US adults believe that climate change is impacting their community.
# When I used the app again at the 99% confidence interval, 49 out of 50 of the intervals contained the true proportion. This is equivalent to 98%, which is slightly lower than the confidence level.
# I am going to utilize a confidence interval of 90%, which I expect to be narrower than both the 95% and 99% intervals I've previously experimented with.
samp %>%
  specify(response = climate_change_affects, success = "Yes") %>%
  generate(reps = 1000, type = "bootstrap") %>%
  calculate(stat = "prop") %>%
  get_ci(level = 0.90)
## # A tibble: 1 × 2
##   lower_ci upper_ci
##      <dbl>    <dbl>
## 1     0.55     0.75
# When using the app for the 90% confidence interval, 45 out of 50 intervals generated contained the true proportion. This is equivalent to 90%, which does indeed match the confidence level.
# As the sample size increases, the intervals become wider and generally more accurate; an increase in sample size corresponds with a decrease in the amount of intervals that fail to capture the true proportion.
# As the amount of bootstrap samples increases, the width of the intervals also increases.
LS0tDQp0aXRsZTogIkxhYiBOYW1lIg0KYXV0aG9yOiAiQXV0aG9yIE5hbWUiDQpkYXRlOiAiYHIgU3lzLkRhdGUoKWAiDQpvdXRwdXQ6IG9wZW5pbnRybzo6bGFiX3JlcG9ydA0KLS0tDQoNCmBgYHtyIGxvYWQtcGFja2FnZXMsIG1lc3NhZ2U9RkFMU0V9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkob3BlbmludHJvKQ0KbGlicmFyeShpbmZlcikNCmBgYA0KDQojIyMgR2V0dGluZyBzdGFydGVkDQoNCmBgYHtyfQ0KdXNfYWR1bHRzIDwtIHRpYmJsZShjbGltYXRlX2NoYW5nZV9hZmZlY3RzID0gYyhyZXAoIlllcyIsIDYyMDAwKSwgcmVwKCJObyIsIDM4MDAwKSkpDQpnZ3Bsb3QodXNfYWR1bHRzLCBhZXMoeCA9IGNsaW1hdGVfY2hhbmdlX2FmZmVjdHMpKSArDQogIGdlb21fYmFyKCkgKw0KICBsYWJzKA0KICAgIHggPSAiIiwgeSA9ICIiLA0KICAgIHRpdGxlID0gIkRvIHlvdSB0aGluayBjbGltYXRlIGNoYW5nZSBpcyBhZmZlY3RpbmcgeW91ciBsb2NhbCBjb21tdW5pdHk/Ig0KICApICsNCiAgY29vcmRfZmxpcCgpDQp1c19hZHVsdHMgJT4lDQogIGNvdW50KGNsaW1hdGVfY2hhbmdlX2FmZmVjdHMpICU+JQ0KICAgbXV0YXRlKHAgPSBuL3N1bShuKSkNCm4gPC0gNjANCnNhbXAgPC0gdXNfYWR1bHRzICU+JQ0KICBzYW1wbGVfbihzaXplID0gbikNCmBgYA0KDQojIyMgQ29uZmlkZW5jZSBsZXZlbHMNCg0KLi4uDQpgYGB7cn0NCnNhbXAgJT4lDQogIHNwZWNpZnkocmVzcG9uc2UgPSBjbGltYXRlX2NoYW5nZV9hZmZlY3RzLCBzdWNjZXNzID0gIlllcyIpICU+JQ0KICBnZW5lcmF0ZShyZXBzID0gMTAwMCwgdHlwZSA9ICJib290c3RyYXAiKSAlPiUNCiAgY2FsY3VsYXRlKHN0YXQgPSAicHJvcCIpICU+JQ0KICBnZXRfY2kobGV2ZWwgPSAwLjk1KQ0KIyBRdWVzdGlvbiByZXNwb25zZXM6DQojIFN0YXRpbmcgdGhhdCB0aGUgY29uZmlkZW5jZSBpbnRlcnZhbCBpcyA5NSUgbWVhbnMgdGhhdCB0aGVyZSBpcyBhIDk1JSBjaGFuY2UgdGhhdCB0aGUgdHJ1ZSBwcm9wb3J0aW9uIGlzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGludGVydmFsLg0KIyBHaXZlbiB0aGF0IG15IGNvbmZpZGVuY2UgaW50ZXJ2YWwgcmFuZ2VzIGluIGJldHdlZW4gMC40MzMgYW5kIDAuNjgzLCB0aGUgdHJ1ZSBwb3B1bGF0aW9uIHByb3BvcnRpb24gb2YgMC42MiBpcyBjb250YWluZWQgd2l0aGluIHRoZSBpbnRlcnZhbC4NCiMgSSB3b3VsZCBleHBlY3QgOTUlIG9mIHRoZSBpbnRlcnZhbHMgdG8gY2FwdHVyZSB0aGUgdHJ1ZSBwb3B1bGF0aW9uIHByb3BvcnRpb24sIGFzIGl0IGlzIGEgOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWwuIFRoaXMgbWFrZXMgaXQgcmVhc29uYWJsZSB0byBhc3N1bWUgdGhhdCBnaXZlbiBhIGxhcmdlIGVub3VnaCBhbW91bnQgb2Ygb3Bwb3J0dW5pdGllcywgOTUlIG9mIHRoZSBpbnRlcnZhbHMgZ2VuZXJhdGVkIHdpbGwgY29udGFpbiB0aGUgdHJ1ZSBwcm9wb3J0aW9uLg0KIyBDOi9Vc2Vycy9lbW1hcC9BcHBEYXRhL0xvY2FsL1RlbXAvVW50aXRsZWQucG5nDQojIDQ3IG91dCBvZiA1MCBnZW5lcmF0ZWQgaW50ZXJ2YWxzIHN1Y2Nlc3NmdWxseSBjYXB0dXJlIHRoZSB0cnVlIHByb3BvcnRpb24sIHdoaWNoIGlzIGVxdWl2YWxlbnQgdG8gYXJvdW5kIDk0JS4gSXQgaXMgbm90IGV4YWN0bHkgZXF1YWwgdG8gdGhlIGNvbmZpZGVuY2UgbGV2ZWwsIGJ1dCB0aGlzIGlzIGxpa2VseSBiZWNhdXNlIDUwIGlzIGEgcmVsYXRpdmVseSBzbWFsbCBhbW91bnQgb2YgaW50ZXJ2YWxzIHRvIGdlbmVyYXRlLiBBIGxhcmdlciBhbW91bnQgc3VjaCBhcyAxMDAgb3IgMTAwIHdvdWxkIGxpa2VseSBoYXZlIGVuZGVkIHVwIGJlaW5nIGNsb3NlciB0byB0aGUgY29uZmlkZW5jZSBsZXZlbC4NCmBgYA0KDQojIyMgTW9yZSBwcmFjdGljZSANCg0KYGBge3J9DQojUXVlc3Rpb24gcmVzcG9uc2VzDQojIEdpdmVuIGEgY29uZmlkZW5jZSBpbnRlcnZhbCBvZiAwLjk2LCBJIHdvdWxkIGV4cGVjdCBpdCB0byBiZSB3aWRlciBiZWNhdXNlIGEgZ3JlYXRlciBhbW91bnQgb2YgaXRzIGludGVydmFscyB3b3VsZCBiZSBhY2N1cmF0ZWx5IGNhcHR1cmluZyB0aGUgcHJvcG9ydGlvbi4gSW4gb3JkZXIgdG8gaW5jcmVhc2UgdGhlIGxpa2VsaWhvb2Qgb2YgdGhpcyBvY2N1cnJpbmcsIHRoZSBhdmVyYWdlIGludGVydmFsIHdvdWxkIGhhdmUgdG8gY29udGFpbiBtb3JlIHZhbHVlcy4NCnNhbXAgJT4lDQogIHNwZWNpZnkocmVzcG9uc2UgPSBjbGltYXRlX2NoYW5nZV9hZmZlY3RzLCBzdWNjZXNzID0gIlllcyIpICU+JQ0KICBnZW5lcmF0ZShyZXBzID0gMTAwMCwgdHlwZSA9ICJib290c3RyYXAiKSAlPiUNCiAgY2FsY3VsYXRlKHN0YXQgPSAicHJvcCIpICU+JQ0KICBnZXRfY2kobGV2ZWwgPSAwLjk5KQ0KIyBJIGFtIDk5JSBjb25maWRlbnQgdGhhdCBiZXR3ZWVuIDM4LjMlIGFuZCA3My4zJSBvZiBVUyBhZHVsdHMgYmVsaWV2ZSB0aGF0IGNsaW1hdGUgY2hhbmdlIGlzIGltcGFjdGluZyB0aGVpciBjb21tdW5pdHkuDQojIFdoZW4gSSB1c2VkIHRoZSBhcHAgYWdhaW4gYXQgdGhlIDk5JSBjb25maWRlbmNlIGludGVydmFsLCA0OSBvdXQgb2YgNTAgb2YgdGhlIGludGVydmFscyBjb250YWluZWQgdGhlIHRydWUgcHJvcG9ydGlvbi4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIDk4JSwgd2hpY2ggaXMgc2xpZ2h0bHkgbG93ZXIgdGhhbiB0aGUgY29uZmlkZW5jZSBsZXZlbC4NCiMgSSBhbSBnb2luZyB0byB1dGlsaXplIGEgY29uZmlkZW5jZSBpbnRlcnZhbCBvZiA5MCUsIHdoaWNoIEkgZXhwZWN0IHRvIGJlIG5hcnJvd2VyIHRoYW4gYm90aCB0aGUgOTUlIGFuZCA5OSUgaW50ZXJ2YWxzIEkndmUgcHJldmlvdXNseSBleHBlcmltZW50ZWQgd2l0aC4NCnNhbXAgJT4lDQogIHNwZWNpZnkocmVzcG9uc2UgPSBjbGltYXRlX2NoYW5nZV9hZmZlY3RzLCBzdWNjZXNzID0gIlllcyIpICU+JQ0KICBnZW5lcmF0ZShyZXBzID0gMTAwMCwgdHlwZSA9ICJib290c3RyYXAiKSAlPiUNCiAgY2FsY3VsYXRlKHN0YXQgPSAicHJvcCIpICU+JQ0KICBnZXRfY2kobGV2ZWwgPSAwLjkwKQ0KIyBXaGVuIHVzaW5nIHRoZSBhcHAgZm9yIHRoZSA5MCUgY29uZmlkZW5jZSBpbnRlcnZhbCwgNDUgb3V0IG9mIDUwIGludGVydmFscyBnZW5lcmF0ZWQgY29udGFpbmVkIHRoZSB0cnVlIHByb3BvcnRpb24uIFRoaXMgaXMgZXF1aXZhbGVudCB0byA5MCUsIHdoaWNoIGRvZXMgaW5kZWVkIG1hdGNoIHRoZSBjb25maWRlbmNlIGxldmVsLg0KIyBBcyB0aGUgc2FtcGxlIHNpemUgaW5jcmVhc2VzLCB0aGUgaW50ZXJ2YWxzIGJlY29tZSB3aWRlciBhbmQgZ2VuZXJhbGx5IG1vcmUgYWNjdXJhdGU7IGFuIGluY3JlYXNlIGluIHNhbXBsZSBzaXplIGNvcnJlc3BvbmRzIHdpdGggYSBkZWNyZWFzZSBpbiB0aGUgYW1vdW50IG9mIGludGVydmFscyB0aGF0IGZhaWwgdG8gY2FwdHVyZSB0aGUgdHJ1ZSBwcm9wb3J0aW9uLg0KIyBBcyB0aGUgYW1vdW50IG9mIGJvb3RzdHJhcCBzYW1wbGVzIGluY3JlYXNlcywgdGhlIHdpZHRoIG9mIHRoZSBpbnRlcnZhbHMgYWxzbyBpbmNyZWFzZXMuDQoNCmBgYA==