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

Exercise 1

The largest group in this category is 0 and ‘did not drive’.

yrbss %>%
  count(text_while_driving_30d) 
## # A tibble: 9 x 2
##   text_while_driving_30d     n
## * <chr>                  <int>
## 1 0                       4792
## 2 1-2                      925
## 3 10-19                    373
## 4 20-29                    298
## 5 3-5                      493
## 6 30                       827
## 7 6-9                      311
## 8 did not drive           4646
## 9 <NA>                     918

Exercise 2

Around 7.1% of teens texted while driving 30 days straight without wearing a helmet.

no_helmet <- yrbss %>%
  filter(helmet_12m == "never")

no_helmet <- no_helmet %>%
  mutate(text_ind = ifelse(text_while_driving_30d == "30", "yes", "no"))

no_helmet %>%
  drop_na(text_ind) %>%
  count(text_ind)
## # A tibble: 2 x 2
##   text_ind     n
## * <chr>    <int>
## 1 no        6040
## 2 yes        463

Exercise 3

no_helmet %>%
  specify(response = text_ind, success = "yes") %>%
  generate(reps = 1000, type = "bootstrap") %>%
  calculate(stat = "prop") %>%
  get_ci(level = 0.95)
## Warning: Removed 474 rows containing missing values.
## # A tibble: 1 x 2
##   lower_ci upper_ci
##      <dbl>    <dbl>
## 1   0.0654   0.0778
no_helmet <- no_helmet %>%
  drop_na(text_ind)

n <- count(no_helmet)
p <- count(no_helmet %>% filter(text_ind == "yes")) / n
SE <- sqrt( (p*(1-p)) / n )

ME <- 1.96 * SE

print(ME)
##             n
## 1 0.006250207

Exercise 4

The confidence interval we calculates is between 6.1% and 7.8%.This means we are 95% confident the true proportion would fall between this range.

no_drive <- yrbss %>%
  filter(helmet_12m == "did not ride")

no_drive <- no_drive %>%
  mutate(text_ind = ifelse(text_while_driving_30d == "30", "yes", "no"))


no_drive %>%
  specify(response = text_ind, success = "yes") %>%
  generate(reps = 1000, type = "bootstrap") %>%
  calculate(stat = "prop") %>%
  get_ci(level = 0.95)
## Warning: Removed 324 rows containing missing values.
## # A tibble: 1 x 2
##   lower_ci upper_ci
##      <dbl>    <dbl>
## 1   0.0627   0.0774
rarely_helmet <- yrbss %>%
  filter(helmet_12m == "rarely")

rarely_helmet <- rarely_helmet %>%
  mutate(text_ind = ifelse(text_while_driving_30d == "30", "yes", "no"))


rarely_helmet %>%
  specify(response = text_ind, success = "yes") %>%
  generate(reps = 1000, type = "bootstrap") %>%
  calculate(stat = "prop") %>%
  get_ci(level = 0.95)
## Warning: Removed 43 rows containing missing values.
## # A tibble: 1 x 2
##   lower_ci upper_ci
##      <dbl>    <dbl>
## 1   0.0284   0.0597

Exercise 5

As the population proportion approaches 0.5 the Margin of Error increases. Meaning the more even the proportion the higher the Margin of Error is.

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")

Exercise 6

The mean is slightly off from the population proportion p = 0.1 being 0.09. The distribution is still normal and the standard deviation is 0.02.

set.seed(10000)

sample1 <- data.frame(samples = sample(c("y", "n"), 300, replace = TRUE, prob = c(0.1, 0.9))) %>%
  generate(reps = 15000, type = "bootstrap") %>%
  count(samples) %>%
  mutate(p_hat = n /sum(n)) %>%
  filter(samples == 'y')

hist(sample1$p_hat)

library(psych)
## 
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
describe(sample1$p_hat)
##    vars     n mean   sd median trimmed  mad  min  max range skew kurtosis se
## X1    1 15000 0.09 0.02   0.09    0.09 0.01 0.03 0.15  0.12 0.16     0.05  0

###Exercise 7

Increasing the proportion in this case increases the standard deviation. In the case where p = 0.1 the standard deviation of 0.02 and increasing p to 0.3 and 0.5 gave us a value of 0.03.

sample2 <- data.frame(samples = sample(c("y", "n"), 300, replace = TRUE, prob = c(0.3, 0.7))) %>%
  generate(reps = 15000, type = "bootstrap") %>%
  count(samples) %>%
  mutate(p_hat = n /sum(n)) %>%
  filter(samples == 'y')

hist(sample2$p_hat)

describe(sample2$p_hat)
##    vars     n mean   sd median trimmed  mad  min  max range skew kurtosis se
## X1    1 15000 0.28 0.03   0.28    0.28 0.02 0.18 0.39  0.21 0.07     0.05  0
sample3 <- data.frame(samples = sample(c("y", "n"), 300, replace = TRUE, prob = c(0.5, 0.5))) %>%
  generate(reps = 15000, type = "bootstrap") %>%
  count(samples) %>%
  mutate(p_hat = n /sum(n)) %>%
  filter(samples == 'y')

hist(sample3$p_hat)

describe(sample3$p_hat)
##    vars     n mean   sd median trimmed  mad  min  max range skew kurtosis se
## X1    1 15000 0.52 0.03   0.52    0.52 0.03 0.41 0.63  0.22 0.01        0  0

Exercise 8

sample4 <- data.frame(samples = sample(c("y", "n"), 2000, replace = TRUE, prob = c(0.1, 0.9))) %>%
  generate(reps = 15000, type = "bootstrap") %>%
  count(samples) %>%
  mutate(p_hat = n /sum(n)) %>%
  filter(samples == 'y')

hist(sample4$p_hat)

Exercise 9

My null hypothesis is the proportions of students that sleep 10+ hours and weight train will match the proportion of those who do not.

school_sleep <- yrbss %>%
  mutate(ten_plus_sleep = ifelse(school_night_hours_sleep == "10+", "yes", "no")) %>%
  mutate(s_training = ifelse(strength_training_7d == "7", "yes", "no")) %>%
  drop_na(school_night_hours_sleep) %>%
  drop_na(strength_training_7d)

school_sleep %>%
  count(ten_plus_sleep, s_training)
## # A tibble: 4 x 3
##   ten_plus_sleep s_training     n
##   <chr>          <chr>      <int>
## 1 no             no          9949
## 2 no             yes         1958
## 3 yes            no           228
## 4 yes            yes           84
p_0 <- 1958 / (1958 + 9949)
p <- 84 / (228 + 84)
n <- 228 + 84

SE <- sqrt( (p_0*(1-p_0)) / n )

Z <- (p - p_0) / SE

1 - pnorm(Z)
## [1] 2.965257e-07

With this result I reject the null hypothesis and accept the alternative hypothesis that students that sleep 10+ hours are more likely to weight train.

Exercise 10

In this case the chace this is a coincidence is 3*10^-7% chance. Very unlikely.

Exercise 11

Assuming we want at the very least a 1% margin of error I am assuming our proportion is 0.5 since that would produce the largest ME. 1,900 would be the minimum amount of people we would need to survery in order to reach that value.

(0.05*(1-0.05)) / ((0.01/2)^2)
## [1] 1900
LS0tCnRpdGxlOiAiRGF0YSA2MDYgTGFiIDYiCmF1dGhvcjogIkpvcmRhbiBHbGVuZHJhbmdlIgpkYXRlOiAiYHIgU3lzLkRhdGUoKWAiCm91dHB1dDogb3BlbmludHJvOjpsYWJfcmVwb3J0Ci0tLQoKYGBge3IgbG9hZC1wYWNrYWdlcywgbWVzc2FnZT1GQUxTRX0KbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkob3BlbmludHJvKQpsaWJyYXJ5KGluZmVyKQpgYGAKCiMjIyBFeGVyY2lzZSAxCgpUaGUgbGFyZ2VzdCBncm91cCBpbiB0aGlzIGNhdGVnb3J5IGlzIDAgYW5kICdkaWQgbm90IGRyaXZlJy4KCmBgYHtyIGNvZGUtY2h1bmstbGFiZWx9CnlyYnNzICU+JQogIGNvdW50KHRleHRfd2hpbGVfZHJpdmluZ18zMGQpIApgYGAKCiMjIyBFeGVyY2lzZSAyCgpBcm91bmQgNy4xJSBvZiB0ZWVucyB0ZXh0ZWQgd2hpbGUgZHJpdmluZyAzMCBkYXlzIHN0cmFpZ2h0IHdpdGhvdXQgd2VhcmluZyBhIGhlbG1ldC4KCmBgYHtyfQpub19oZWxtZXQgPC0geXJic3MgJT4lCiAgZmlsdGVyKGhlbG1ldF8xMm0gPT0gIm5ldmVyIikKCm5vX2hlbG1ldCA8LSBub19oZWxtZXQgJT4lCiAgbXV0YXRlKHRleHRfaW5kID0gaWZlbHNlKHRleHRfd2hpbGVfZHJpdmluZ18zMGQgPT0gIjMwIiwgInllcyIsICJubyIpKQoKbm9faGVsbWV0ICU+JQogIGRyb3BfbmEodGV4dF9pbmQpICU+JQogIGNvdW50KHRleHRfaW5kKQpgYGAKCiMjIyBFeGVyY2lzZSAzCgoKYGBge3J9Cm5vX2hlbG1ldCAlPiUKICBzcGVjaWZ5KHJlc3BvbnNlID0gdGV4dF9pbmQsIHN1Y2Nlc3MgPSAieWVzIikgJT4lCiAgZ2VuZXJhdGUocmVwcyA9IDEwMDAsIHR5cGUgPSAiYm9vdHN0cmFwIikgJT4lCiAgY2FsY3VsYXRlKHN0YXQgPSAicHJvcCIpICU+JQogIGdldF9jaShsZXZlbCA9IDAuOTUpCmBgYAoKYGBge3J9Cm5vX2hlbG1ldCA8LSBub19oZWxtZXQgJT4lCiAgZHJvcF9uYSh0ZXh0X2luZCkKCm4gPC0gY291bnQobm9faGVsbWV0KQpwIDwtIGNvdW50KG5vX2hlbG1ldCAlPiUgZmlsdGVyKHRleHRfaW5kID09ICJ5ZXMiKSkgLyBuClNFIDwtIHNxcnQoIChwKigxLXApKSAvIG4gKQoKTUUgPC0gMS45NiAqIFNFCgpwcmludChNRSkKYGBgCiMjIyBFeGVyY2lzZSA0CgpUaGUgY29uZmlkZW5jZSBpbnRlcnZhbCB3ZSBjYWxjdWxhdGVzIGlzIGJldHdlZW4gNi4xJSBhbmQgNy44JS5UaGlzIG1lYW5zIHdlIGFyZSA5NSUgY29uZmlkZW50IHRoZSB0cnVlIHByb3BvcnRpb24gd291bGQgZmFsbCBiZXR3ZWVuIHRoaXMgcmFuZ2UuCgpgYGB7cn0Kbm9fZHJpdmUgPC0geXJic3MgJT4lCiAgZmlsdGVyKGhlbG1ldF8xMm0gPT0gImRpZCBub3QgcmlkZSIpCgpub19kcml2ZSA8LSBub19kcml2ZSAlPiUKICBtdXRhdGUodGV4dF9pbmQgPSBpZmVsc2UodGV4dF93aGlsZV9kcml2aW5nXzMwZCA9PSAiMzAiLCAieWVzIiwgIm5vIikpCgoKbm9fZHJpdmUgJT4lCiAgc3BlY2lmeShyZXNwb25zZSA9IHRleHRfaW5kLCBzdWNjZXNzID0gInllcyIpICU+JQogIGdlbmVyYXRlKHJlcHMgPSAxMDAwLCB0eXBlID0gImJvb3RzdHJhcCIpICU+JQogIGNhbGN1bGF0ZShzdGF0ID0gInByb3AiKSAlPiUKICBnZXRfY2kobGV2ZWwgPSAwLjk1KQoKYGBgCgpgYGB7cn0KcmFyZWx5X2hlbG1ldCA8LSB5cmJzcyAlPiUKICBmaWx0ZXIoaGVsbWV0XzEybSA9PSAicmFyZWx5IikKCnJhcmVseV9oZWxtZXQgPC0gcmFyZWx5X2hlbG1ldCAlPiUKICBtdXRhdGUodGV4dF9pbmQgPSBpZmVsc2UodGV4dF93aGlsZV9kcml2aW5nXzMwZCA9PSAiMzAiLCAieWVzIiwgIm5vIikpCgoKcmFyZWx5X2hlbG1ldCAlPiUKICBzcGVjaWZ5KHJlc3BvbnNlID0gdGV4dF9pbmQsIHN1Y2Nlc3MgPSAieWVzIikgJT4lCiAgZ2VuZXJhdGUocmVwcyA9IDEwMDAsIHR5cGUgPSAiYm9vdHN0cmFwIikgJT4lCiAgY2FsY3VsYXRlKHN0YXQgPSAicHJvcCIpICU+JQogIGdldF9jaShsZXZlbCA9IDAuOTUpCmBgYAoKIyMjIEV4ZXJjaXNlIDUKCkFzIHRoZSBwb3B1bGF0aW9uIHByb3BvcnRpb24gYXBwcm9hY2hlcyAwLjUgdGhlIE1hcmdpbiBvZiBFcnJvciBpbmNyZWFzZXMuIE1lYW5pbmcgdGhlIG1vcmUgZXZlbiB0aGUgcHJvcG9ydGlvbiB0aGUgaGlnaGVyIHRoZSBNYXJnaW4gb2YgRXJyb3IgaXMuIAoKYGBge3J9Cm4gPC0gMTAwMAoKcCA8LSBzZXEoZnJvbSA9IDAsIHRvID0gMSwgYnkgPSAwLjAxKQptZSA8LSAyICogc3FydChwICogKDEgLSBwKS9uKQoKZGQgPC0gZGF0YS5mcmFtZShwID0gcCwgbWUgPSBtZSkKZ2dwbG90KGRhdGEgPSBkZCwgYWVzKHggPSBwLCB5ID0gbWUpKSArIAogIGdlb21fbGluZSgpICsKICBsYWJzKHggPSAiUG9wdWxhdGlvbiBQcm9wb3J0aW9uIiwgeSA9ICJNYXJnaW4gb2YgRXJyb3IiKQpgYGAKCiMjIyBFeGVyY2lzZSA2CgpUaGUgbWVhbiBpcyBzbGlnaHRseSBvZmYgZnJvbSB0aGUgcG9wdWxhdGlvbiBwcm9wb3J0aW9uIHAgPSAwLjEgYmVpbmcgMC4wOS4gVGhlIGRpc3RyaWJ1dGlvbiBpcyBzdGlsbCBub3JtYWwgYW5kIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24gaXMgMC4wMi4gCgpgYGB7cn0Kc2V0LnNlZWQoMTAwMDApCgpzYW1wbGUxIDwtIGRhdGEuZnJhbWUoc2FtcGxlcyA9IHNhbXBsZShjKCJ5IiwgIm4iKSwgMzAwLCByZXBsYWNlID0gVFJVRSwgcHJvYiA9IGMoMC4xLCAwLjkpKSkgJT4lCiAgZ2VuZXJhdGUocmVwcyA9IDE1MDAwLCB0eXBlID0gImJvb3RzdHJhcCIpICU+JQogIGNvdW50KHNhbXBsZXMpICU+JQogIG11dGF0ZShwX2hhdCA9IG4gL3N1bShuKSkgJT4lCiAgZmlsdGVyKHNhbXBsZXMgPT0gJ3knKQoKaGlzdChzYW1wbGUxJHBfaGF0KQpgYGAKCmBgYHtyfQpsaWJyYXJ5KHBzeWNoKQoKZGVzY3JpYmUoc2FtcGxlMSRwX2hhdCkKYGBgCgojIyNFeGVyY2lzZSA3CgpJbmNyZWFzaW5nIHRoZSBwcm9wb3J0aW9uIGluIHRoaXMgY2FzZSBpbmNyZWFzZXMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbi4gSW4gdGhlIGNhc2Ugd2hlcmUgcCA9IDAuMSB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uIG9mIDAuMDIgYW5kIGluY3JlYXNpbmcgcCB0byAwLjMgYW5kIDAuNSBnYXZlIHVzIGEgdmFsdWUgb2YgMC4wMy4KCmBgYHtyfQpzYW1wbGUyIDwtIGRhdGEuZnJhbWUoc2FtcGxlcyA9IHNhbXBsZShjKCJ5IiwgIm4iKSwgMzAwLCByZXBsYWNlID0gVFJVRSwgcHJvYiA9IGMoMC4zLCAwLjcpKSkgJT4lCiAgZ2VuZXJhdGUocmVwcyA9IDE1MDAwLCB0eXBlID0gImJvb3RzdHJhcCIpICU+JQogIGNvdW50KHNhbXBsZXMpICU+JQogIG11dGF0ZShwX2hhdCA9IG4gL3N1bShuKSkgJT4lCiAgZmlsdGVyKHNhbXBsZXMgPT0gJ3knKQoKaGlzdChzYW1wbGUyJHBfaGF0KQpgYGAKCmBgYHtyfQpkZXNjcmliZShzYW1wbGUyJHBfaGF0KQpgYGAKCmBgYHtyfQpzYW1wbGUzIDwtIGRhdGEuZnJhbWUoc2FtcGxlcyA9IHNhbXBsZShjKCJ5IiwgIm4iKSwgMzAwLCByZXBsYWNlID0gVFJVRSwgcHJvYiA9IGMoMC41LCAwLjUpKSkgJT4lCiAgZ2VuZXJhdGUocmVwcyA9IDE1MDAwLCB0eXBlID0gImJvb3RzdHJhcCIpICU+JQogIGNvdW50KHNhbXBsZXMpICU+JQogIG11dGF0ZShwX2hhdCA9IG4gL3N1bShuKSkgJT4lCiAgZmlsdGVyKHNhbXBsZXMgPT0gJ3knKQoKaGlzdChzYW1wbGUzJHBfaGF0KQpgYGAKCmBgYHtyfQpkZXNjcmliZShzYW1wbGUzJHBfaGF0KQpgYGAKIyMjIEV4ZXJjaXNlIDgKCmBgYHtyfQpzYW1wbGU0IDwtIGRhdGEuZnJhbWUoc2FtcGxlcyA9IHNhbXBsZShjKCJ5IiwgIm4iKSwgMjAwMCwgcmVwbGFjZSA9IFRSVUUsIHByb2IgPSBjKDAuMSwgMC45KSkpICU+JQogIGdlbmVyYXRlKHJlcHMgPSAxNTAwMCwgdHlwZSA9ICJib290c3RyYXAiKSAlPiUKICBjb3VudChzYW1wbGVzKSAlPiUKICBtdXRhdGUocF9oYXQgPSBuIC9zdW0obikpICU+JQogIGZpbHRlcihzYW1wbGVzID09ICd5JykKCmhpc3Qoc2FtcGxlNCRwX2hhdCkKYGBgCgoKIyMjIEV4ZXJjaXNlIDkKCk15IG51bGwgaHlwb3RoZXNpcyBpcyB0aGUgcHJvcG9ydGlvbnMgb2Ygc3R1ZGVudHMgdGhhdCBzbGVlcCAxMCsgaG91cnMgYW5kIHdlaWdodCB0cmFpbiB3aWxsIG1hdGNoIHRoZSBwcm9wb3J0aW9uIG9mIHRob3NlIHdobyBkbyBub3QuIAoKYGBge3J9CnNjaG9vbF9zbGVlcCA8LSB5cmJzcyAlPiUKICBtdXRhdGUodGVuX3BsdXNfc2xlZXAgPSBpZmVsc2Uoc2Nob29sX25pZ2h0X2hvdXJzX3NsZWVwID09ICIxMCsiLCAieWVzIiwgIm5vIikpICU+JQogIG11dGF0ZShzX3RyYWluaW5nID0gaWZlbHNlKHN0cmVuZ3RoX3RyYWluaW5nXzdkID09ICI3IiwgInllcyIsICJubyIpKSAlPiUKICBkcm9wX25hKHNjaG9vbF9uaWdodF9ob3Vyc19zbGVlcCkgJT4lCiAgZHJvcF9uYShzdHJlbmd0aF90cmFpbmluZ183ZCkKCnNjaG9vbF9zbGVlcCAlPiUKICBjb3VudCh0ZW5fcGx1c19zbGVlcCwgc190cmFpbmluZykKYGBgCgpgYGB7cn0KcF8wIDwtIDE5NTggLyAoMTk1OCArIDk5NDkpCnAgPC0gODQgLyAoMjI4ICsgODQpCm4gPC0gMjI4ICsgODQKClNFIDwtIHNxcnQoIChwXzAqKDEtcF8wKSkgLyBuICkKClogPC0gKHAgLSBwXzApIC8gU0UKCjEgLSBwbm9ybShaKQpgYGAKCldpdGggdGhpcyByZXN1bHQgSSByZWplY3QgdGhlIG51bGwgaHlwb3RoZXNpcyBhbmQgYWNjZXB0IHRoZSBhbHRlcm5hdGl2ZSBoeXBvdGhlc2lzIHRoYXQgc3R1ZGVudHMgdGhhdCBzbGVlcCAxMCsgaG91cnMgYXJlIG1vcmUgbGlrZWx5IHRvIHdlaWdodCB0cmFpbi4KCiMjIyBFeGVyY2lzZSAxMAoKSW4gdGhpcyBjYXNlIHRoZSBjaGFjZSB0aGlzIGlzIGEgY29pbmNpZGVuY2UgaXMgMyoxMF4tNyUgY2hhbmNlLiBWZXJ5IHVubGlrZWx5LiAKCiMjIyBFeGVyY2lzZSAxMQoKQXNzdW1pbmcgd2Ugd2FudCBhdCB0aGUgdmVyeSBsZWFzdCBhIDElIG1hcmdpbiBvZiBlcnJvciBJIGFtIGFzc3VtaW5nIG91ciBwcm9wb3J0aW9uIGlzIDAuNSBzaW5jZSB0aGF0IHdvdWxkIHByb2R1Y2UgdGhlIGxhcmdlc3QgTUUuIDEsOTAwIHdvdWxkIGJlIHRoZSBtaW5pbXVtIGFtb3VudCBvZiBwZW9wbGUgd2Ugd291bGQgbmVlZCB0byBzdXJ2ZXJ5IGluIG9yZGVyIHRvIHJlYWNoIHRoYXQgdmFsdWUuCgpgYGB7cn0KKDAuMDUqKDEtMC4wNSkpIC8gKCgwLjAxLzIpXjIpCmBgYA==