library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(openintro)
## Loading required package: airports
## Loading required package: cherryblossom
## Loading required package: usdata
library(infer)

Exercise 1

What are the counts within each category for the amount of days these students have texted while driving within the past 30 days?

# Within the past 30 days, 2566 students texted while driving 0 days, 515 students did 1-2 days, 281 students did 3-5 days, 175 students did 6-9 days, 207 students did 10-19 days, 180 students did 20-29 days & 463 students did 30 days. While 2116 students did not drive at all throughout the past 30 days & thus were incapable of texting while driving. 

Exercise 2

What is the proportion of people who have texted while driving every day in the past 30 days and never wear helmets?

# The proportion of people who have texted while driving every day while never wearing helmets is .0712.

Exercise 3

What is the margin of error for the estimate of the proportion of non-helmet wearers that have texted while driving each day for the past 30 days based on this survey?

#The margin of error for the proportion of non-helmet wearers that texted while driving every day for the past 30 days is .0063.

Exercise 4

Using the infer package, calculate confidence intervals for two other categorical variables (you’ll need to decide which level to call “success”, and report the associated margins of error. Interpet the interval in context of the data. It may be helpful to create new data sets for each of the two countries first, and then use these data sets to construct the confidence intervals.

#The confidence interval for the category of whether or not the students were hispanic was 0.264,   0.287, & the associated margin of error is .011. In the context of the data this means that we are 95% confident that the proportion of hispanic students is somewhere between .264-.287, with a margin of error of .011.

Exercise 5

Describe the relationship between p and me. Include the margin of error vs. population proportion plot you constructed in your answer. For a given sample size, for which value of p is margin of error maximized?

#The population proportion & margin of error are deeply connected, as more extreme values of p(closer to 0 or 1) result in a smaller me value, whereas p values that are more in the middle will have greater margins of error. For a sample size of 1000, a p-value of .50 maximizes the margin of error. 

Data

no_helmet <- yrbss |>
  filter(helmet_12m == "never") |>
  mutate(text_ind = ifelse(text_while_driving_30d == "30", "yes", "no")) |>
  filter(!is.na(text_ind)) 
head(no_helmet)
## # A tibble: 6 × 14
##     age gender grade hispanic race                      height weight helmet_12m
##   <int> <chr>  <chr> <chr>    <chr>                      <dbl>  <dbl> <chr>     
## 1    14 female 9     not      Black or African American  NA      NA   never     
## 2    15 female 9     hispanic Native Hawaiian or Other…   1.73   84.4 never     
## 3    15 female 9     not      Black or African American   1.6    55.8 never     
## 4    16 male   9     not      Black or African American   1.68   74.8 never     
## 5    14 male   9     not      Black or African American   1.73   73.5 never     
## 6    15 male   9     not      Black or African American   1.83   67.6 never     
## # ℹ 6 more variables: text_while_driving_30d <chr>, physically_active_7d <int>,
## #   hours_tv_per_school_day <chr>, strength_training_7d <int>,
## #   school_night_hours_sleep <chr>, text_ind <chr>
ggplot(no_helmet, aes(x=text_while_driving_30d)) + 
 geom_bar()

no_helmet |>
  group_by(text_while_driving_30d) |>
  count()
## # A tibble: 8 × 2
## # Groups:   text_while_driving_30d [8]
##   text_while_driving_30d     n
##   <chr>                  <int>
## 1 0                       2566
## 2 1-2                      515
## 3 10-19                    207
## 4 20-29                    180
## 5 3-5                      281
## 6 30                       463
## 7 6-9                      175
## 8 did not drive           2116
no_helmet |>
  filter(!is.na(text_ind)) |>
  summarise(prop_text_no_helmet = mean(text_ind == "yes")) |>
  pull()
## [1] 0.07119791
n <- 1000
p <- seq(from = 0, to = 1, by = 0.01)
me <- 2 * sqrt(p * (1 - p)/n)
dd <- data.frame(p = p, me = me)
ggplot(data = dd, aes(x = p, y = me)) + 
  geom_line() +
  labs(x = "Population Proportion", y = "Margin of Error")

no_helmet <- yrbss |>
  filter(helmet_12m == "never") |>
  mutate(text_ind = ifelse(hispanic == "hispanic", "yes", "no")) |>
  filter(!is.na(text_ind)) 
head(no_helmet)
## # A tibble: 6 × 14
##     age gender grade hispanic race                      height weight helmet_12m
##   <int> <chr>  <chr> <chr>    <chr>                      <dbl>  <dbl> <chr>     
## 1    14 female 9     not      Black or African American  NA      NA   never     
## 2    14 female 9     not      Black or African American  NA      NA   never     
## 3    15 female 9     hispanic Native Hawaiian or Other…   1.73   84.4 never     
## 4    15 female 9     not      Black or African American   1.6    55.8 never     
## 5    14 male   9     not      Black or African American   1.88   71.2 never     
## 6    15 male   9     not      Black or African American   1.75   63.5 never     
## # ℹ 6 more variables: text_while_driving_30d <chr>, physically_active_7d <int>,
## #   hours_tv_per_school_day <chr>, strength_training_7d <int>,
## #   school_night_hours_sleep <chr>, text_ind <chr>
no_helmet |>
  specify(response = text_ind, success = "yes") |>
  generate(reps = 1000, type = "bootstrap") |>
  calculate(stat = "prop") |>
  get_ci()
## # A tibble: 1 × 2
##   lower_ci upper_ci
##      <dbl>    <dbl>
## 1    0.265    0.286
LS0tCnRpdGxlOiAiTGFiIE5hbWUiCmF1dGhvcjogIkF1dGhvciBOYW1lIgpkYXRlOiAiYHIgU3lzLkRhdGUoKWAiCm91dHB1dDogb3BlbmludHJvOjpsYWJfcmVwb3J0Ci0tLQoKYGBge3J9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KG9wZW5pbnRybykKbGlicmFyeShpbmZlcikKYGBgCgojIyBFeGVyY2lzZSAxCgpXaGF0IGFyZSB0aGUgY291bnRzIHdpdGhpbiBlYWNoIGNhdGVnb3J5IGZvciB0aGUgYW1vdW50IG9mIGRheXMgdGhlc2Ugc3R1ZGVudHMgaGF2ZSB0ZXh0ZWQgd2hpbGUgZHJpdmluZyB3aXRoaW4gdGhlIHBhc3QgMzAgZGF5cz8KCmBgYHtyfQojIFdpdGhpbiB0aGUgcGFzdCAzMCBkYXlzLCAyNTY2IHN0dWRlbnRzIHRleHRlZCB3aGlsZSBkcml2aW5nIDAgZGF5cywgNTE1IHN0dWRlbnRzIGRpZCAxLTIgZGF5cywgMjgxIHN0dWRlbnRzIGRpZCAzLTUgZGF5cywgMTc1IHN0dWRlbnRzIGRpZCA2LTkgZGF5cywgMjA3IHN0dWRlbnRzIGRpZCAxMC0xOSBkYXlzLCAxODAgc3R1ZGVudHMgZGlkIDIwLTI5IGRheXMgJiA0NjMgc3R1ZGVudHMgZGlkIDMwIGRheXMuIFdoaWxlIDIxMTYgc3R1ZGVudHMgZGlkIG5vdCBkcml2ZSBhdCBhbGwgdGhyb3VnaG91dCB0aGUgcGFzdCAzMCBkYXlzICYgdGh1cyB3ZXJlIGluY2FwYWJsZSBvZiB0ZXh0aW5nIHdoaWxlIGRyaXZpbmcuIApgYGAKCiMjIEV4ZXJjaXNlIDIKCldoYXQgaXMgdGhlIHByb3BvcnRpb24gb2YgcGVvcGxlIHdobyBoYXZlIHRleHRlZCB3aGlsZSBkcml2aW5nIGV2ZXJ5IGRheSBpbiB0aGUgcGFzdCAzMCBkYXlzIGFuZCBuZXZlciB3ZWFyIGhlbG1ldHM/CgpgYGB7cn0KIyBUaGUgcHJvcG9ydGlvbiBvZiBwZW9wbGUgd2hvIGhhdmUgdGV4dGVkIHdoaWxlIGRyaXZpbmcgZXZlcnkgZGF5IHdoaWxlIG5ldmVyIHdlYXJpbmcgaGVsbWV0cyBpcyAuMDcxMi4KYGBgCgojIyBFeGVyY2lzZSAzCgpXaGF0IGlzIHRoZSBtYXJnaW4gb2YgZXJyb3IgZm9yIHRoZSBlc3RpbWF0ZSBvZiB0aGUgcHJvcG9ydGlvbiBvZiBub24taGVsbWV0IHdlYXJlcnMgdGhhdCBoYXZlIHRleHRlZCB3aGlsZSBkcml2aW5nIGVhY2ggZGF5IGZvciB0aGUgcGFzdCAzMCBkYXlzIGJhc2VkIG9uIHRoaXMgc3VydmV5PwoKYGBge3J9CiNUaGUgbWFyZ2luIG9mIGVycm9yIGZvciB0aGUgcHJvcG9ydGlvbiBvZiBub24taGVsbWV0IHdlYXJlcnMgdGhhdCB0ZXh0ZWQgd2hpbGUgZHJpdmluZyBldmVyeSBkYXkgZm9yIHRoZSBwYXN0IDMwIGRheXMgaXMgLjAwNjMuCmBgYAoKIyMgRXhlcmNpc2UgNAoKVXNpbmcgdGhlIGluZmVyIHBhY2thZ2UsIGNhbGN1bGF0ZSBjb25maWRlbmNlIGludGVydmFscyBmb3IgdHdvIG90aGVyIGNhdGVnb3JpY2FsIHZhcmlhYmxlcyAoeW914oCZbGwgbmVlZCB0byBkZWNpZGUgd2hpY2ggbGV2ZWwgdG8gY2FsbCDigJxzdWNjZXNz4oCdLCBhbmQgcmVwb3J0IHRoZSBhc3NvY2lhdGVkIG1hcmdpbnMgb2YgZXJyb3IuIEludGVycGV0IHRoZSBpbnRlcnZhbCBpbiBjb250ZXh0IG9mIHRoZSBkYXRhLiBJdCBtYXkgYmUgaGVscGZ1bCB0byBjcmVhdGUgbmV3IGRhdGEgc2V0cyBmb3IgZWFjaCBvZiB0aGUgdHdvIGNvdW50cmllcyBmaXJzdCwgYW5kIHRoZW4gdXNlIHRoZXNlIGRhdGEgc2V0cyB0byBjb25zdHJ1Y3QgdGhlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzLgoKYGBge3J9CiNUaGUgY29uZmlkZW5jZSBpbnRlcnZhbCBmb3IgdGhlIGNhdGVnb3J5IG9mIHdoZXRoZXIgb3Igbm90IHRoZSBzdHVkZW50cyB3ZXJlIGhpc3BhbmljIHdhcyAwLjI2NCwJMC4yODcsICYgdGhlIGFzc29jaWF0ZWQgbWFyZ2luIG9mIGVycm9yIGlzIC4wMTEuIEluIHRoZSBjb250ZXh0IG9mIHRoZSBkYXRhIHRoaXMgbWVhbnMgdGhhdCB3ZSBhcmUgOTUlIGNvbmZpZGVudCB0aGF0IHRoZSBwcm9wb3J0aW9uIG9mIGhpc3BhbmljIHN0dWRlbnRzIGlzIHNvbWV3aGVyZSBiZXR3ZWVuIC4yNjQtLjI4Nywgd2l0aCBhIG1hcmdpbiBvZiBlcnJvciBvZiAuMDExLgpgYGAKCiMjIEV4ZXJjaXNlIDUKCkRlc2NyaWJlIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBwIGFuZCBtZS4gSW5jbHVkZSB0aGUgbWFyZ2luIG9mIGVycm9yIHZzLiBwb3B1bGF0aW9uIHByb3BvcnRpb24gcGxvdCB5b3UgY29uc3RydWN0ZWQgaW4geW91ciBhbnN3ZXIuIEZvciBhIGdpdmVuIHNhbXBsZSBzaXplLCBmb3Igd2hpY2ggdmFsdWUgb2YgcCBpcyBtYXJnaW4gb2YgZXJyb3IgbWF4aW1pemVkPwoKYGBge3J9CiNUaGUgcG9wdWxhdGlvbiBwcm9wb3J0aW9uICYgbWFyZ2luIG9mIGVycm9yIGFyZSBkZWVwbHkgY29ubmVjdGVkLCBhcyBtb3JlIGV4dHJlbWUgdmFsdWVzIG9mIHAoY2xvc2VyIHRvIDAgb3IgMSkgcmVzdWx0IGluIGEgc21hbGxlciBtZSB2YWx1ZSwgd2hlcmVhcyBwIHZhbHVlcyB0aGF0IGFyZSBtb3JlIGluIHRoZSBtaWRkbGUgd2lsbCBoYXZlIGdyZWF0ZXIgbWFyZ2lucyBvZiBlcnJvci4gRm9yIGEgc2FtcGxlIHNpemUgb2YgMTAwMCwgYSBwLXZhbHVlIG9mIC41MCBtYXhpbWl6ZXMgdGhlIG1hcmdpbiBvZiBlcnJvci4gCmBgYAoKIyMgRGF0YQoKYGBge3J9Cm5vX2hlbG1ldCA8LSB5cmJzcyB8PgogIGZpbHRlcihoZWxtZXRfMTJtID09ICJuZXZlciIpIHw+CiAgbXV0YXRlKHRleHRfaW5kID0gaWZlbHNlKHRleHRfd2hpbGVfZHJpdmluZ18zMGQgPT0gIjMwIiwgInllcyIsICJubyIpKSB8PgogIGZpbHRlcighaXMubmEodGV4dF9pbmQpKSAKaGVhZChub19oZWxtZXQpCmBgYAoKYGBge3J9CmdncGxvdChub19oZWxtZXQsIGFlcyh4PXRleHRfd2hpbGVfZHJpdmluZ18zMGQpKSArIAogZ2VvbV9iYXIoKQpgYGAKCmBgYHtyfQpub19oZWxtZXQgfD4KICBncm91cF9ieSh0ZXh0X3doaWxlX2RyaXZpbmdfMzBkKSB8PgogIGNvdW50KCkKYGBgCgpgYGB7cn0Kbm9faGVsbWV0IHw+CiAgZmlsdGVyKCFpcy5uYSh0ZXh0X2luZCkpIHw+CiAgc3VtbWFyaXNlKHByb3BfdGV4dF9ub19oZWxtZXQgPSBtZWFuKHRleHRfaW5kID09ICJ5ZXMiKSkgfD4KICBwdWxsKCkKYGBgCgpgYGB7cn0KbiA8LSAxMDAwCnAgPC0gc2VxKGZyb20gPSAwLCB0byA9IDEsIGJ5ID0gMC4wMSkKbWUgPC0gMiAqIHNxcnQocCAqICgxIC0gcCkvbikKYGBgCgpgYGB7cn0KZGQgPC0gZGF0YS5mcmFtZShwID0gcCwgbWUgPSBtZSkKZ2dwbG90KGRhdGEgPSBkZCwgYWVzKHggPSBwLCB5ID0gbWUpKSArIAogIGdlb21fbGluZSgpICsKICBsYWJzKHggPSAiUG9wdWxhdGlvbiBQcm9wb3J0aW9uIiwgeSA9ICJNYXJnaW4gb2YgRXJyb3IiKQpgYGAKCmBgYHtyfQpub19oZWxtZXQgPC0geXJic3MgfD4KICBmaWx0ZXIoaGVsbWV0XzEybSA9PSAibmV2ZXIiKSB8PgogIG11dGF0ZSh0ZXh0X2luZCA9IGlmZWxzZShoaXNwYW5pYyA9PSAiaGlzcGFuaWMiLCAieWVzIiwgIm5vIikpIHw+CiAgZmlsdGVyKCFpcy5uYSh0ZXh0X2luZCkpIApoZWFkKG5vX2hlbG1ldCkKYGBgCgpgYGB7cn0Kbm9faGVsbWV0IHw+CiAgc3BlY2lmeShyZXNwb25zZSA9IHRleHRfaW5kLCBzdWNjZXNzID0gInllcyIpIHw+CiAgZ2VuZXJhdGUocmVwcyA9IDEwMDAsIHR5cGUgPSAiYm9vdHN0cmFwIikgfD4KICBjYWxjdWxhdGUoc3RhdCA9ICJwcm9wIikgfD4KICBnZXRfY2koKQpgYGAK