ACCT 426/BUDA 450
Spring 2024, Exam 1
Your name: _____Nathaniel Rippeto___
Question 1 (30%)
Fix the code below
library(tidyverse)
library(dplyr)
Margin = 0.5
ugly_tibble <- tibble(
id = 1:5,
region = c('a', 'b', 'a', 'b', NA),
sales = c(23, 44, 44, 22, 100))
# Remove NA values
# Create a profit field using margin
# Sort by profit
# Remove id column
clean_tibble <- ugly_tibble %>%
filter(!is.na(region)) %>%
mutate(profit = sales * Margin) %>%
arrange(profit) %>%
select(-id)
# Find the number of rows per region, as well as the
# sum of sales
group_tibble <- clean_tibble %>%
group_by(region) %>%
summarise(n_of_rows = n(),
sum_of_sales = sum(sales))
# Use the cor function to find the correlation
# between sales and profit
cor(clean_tibble$sales, clean_tibble$profit)
Question 2
Complete the following tasks with this tibble.
# Data tibbles used for following tasks
# Do not modify
t <- tibble(
id = 1:100,
region = rep(c('WV', 'VA', 'CA', 'TX', 'FL'), 20),
sales = (1 + runif(100)) ^ 4
)
t[1, ]$sales <- NA
t[2, ]$region <- NA
state_names <- tibble(
region = c('WV', 'VA', 'CA', 'TX', 'FL'),
state_name = c('West Virginia', 'Virginia', 'California', 'Texas', 'Florida')
)
Q2a (20 points)
Create a tibble called WV sales that shows all sales for that state.
Place the rows in order by sales. Round sales to the nearest integer
(whole number) Exclude any values that are less than 5.
wv_sales <- t %>%
select(sales, region, id) %>%
left_join(state_names, by = 'region') %>%
mutate(sales_rounded = round(sales)) %>%
filter(sales_rounded >= 5) %>%
arrange(sales)
print(wv_sales)
Q2b (20 points)
Create a tibble called sales summary that shows grouped sales for
each state.
Join it with the state names tibble.
Show the median sales by state name. Be sure to fix any issues with
NA values.
sales_summary <- t %>%
select(sales, region) %>%
left_join(state_names, by = 'region') %>%
group_by(state_name) %>%
mutate(med_sales_state = median(`sales`)) %>%
filter(!is.na(med_sales_state)) %>%
arrange(state_name)
print(sales_summary)
Q2c (10 points)
Use ggplot to create a box plot of the t tibble. Show region as x,
and sales as y.
ggplot(data = t) +
geom_boxplot(mapping = aes(x = region, y = sales))
Q3 (10 points)
There are significant differences between accuracy, precision, and
recall. Which measure we would care most about in the following
situations:
- Investigating fraud. We never want to miss a case, even if
we have to investigate a lot of false positives.
accuracy
- Screening for a minor medical condition. We want to balance false
positives and false negatives equally.
recall
- Testing before giving a difficult chemotherapy treatment. We
never want to give this treatment unless it is absolutely
necessary.
precision
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KIyBBQ0NUIDQyNi9CVURBIDQ1MA0KIyBTcHJpbmcgMjAyNCwgRXhhbSAxDQoNCllvdXIgbmFtZTogX19fX19OYXRoYW5pZWwgUmlwcGV0b19fXw0KDQojIFF1ZXN0aW9uIDEgKDMwJSkNCg0KRml4IHRoZSBjb2RlIGJlbG93DQoNCmBgYHtyfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGRwbHlyKQ0KDQpNYXJnaW4gPSAwLjUNCg0KdWdseV90aWJibGUgPC0gdGliYmxlKA0KICBpZCA9IDE6NSwNCiAgcmVnaW9uID0gYygnYScsICdiJywgJ2EnLCAnYicsIE5BKSwNCiAgc2FsZXMgPSBjKDIzLCA0NCwgNDQsIDIyLCAxMDApKQ0KDQoNCiMgUmVtb3ZlIE5BIHZhbHVlcw0KIyBDcmVhdGUgYSBwcm9maXQgZmllbGQgdXNpbmcgbWFyZ2luDQojIFNvcnQgYnkgcHJvZml0DQojIFJlbW92ZSBpZCBjb2x1bW4NCmNsZWFuX3RpYmJsZSA8LSB1Z2x5X3RpYmJsZSAlPiUgDQogIGZpbHRlcighaXMubmEocmVnaW9uKSkgJT4lIA0KICBtdXRhdGUocHJvZml0ID0gc2FsZXMgKiBNYXJnaW4pICU+JSANCiAgYXJyYW5nZShwcm9maXQpICU+JSANCiAgc2VsZWN0KC1pZCkNCiAgDQojIEZpbmQgdGhlIG51bWJlciBvZiByb3dzIHBlciByZWdpb24sIGFzIHdlbGwgYXMgdGhlIA0KIyBzdW0gb2Ygc2FsZXMNCg0KZ3JvdXBfdGliYmxlIDwtIGNsZWFuX3RpYmJsZSAlPiUgDQogIGdyb3VwX2J5KHJlZ2lvbikgJT4lIA0KICBzdW1tYXJpc2Uobl9vZl9yb3dzID0gbigpLA0KICAgICAgICAgICAgc3VtX29mX3NhbGVzID0gc3VtKHNhbGVzKSkNCg0KIyBVc2UgdGhlIGNvciBmdW5jdGlvbiB0byBmaW5kIHRoZSBjb3JyZWxhdGlvbiANCiMgYmV0d2VlbiBzYWxlcyBhbmQgcHJvZml0DQpjb3IoY2xlYW5fdGliYmxlJHNhbGVzLCBjbGVhbl90aWJibGUkcHJvZml0KQ0KYGBgDQoNCg0KIyBRdWVzdGlvbiAyIA0KDQpDb21wbGV0ZSB0aGUgZm9sbG93aW5nIHRhc2tzIHdpdGggdGhpcyB0aWJibGUuDQoNCmBgYHtyfQ0KDQojIERhdGEgdGliYmxlcyB1c2VkIGZvciBmb2xsb3dpbmcgdGFza3MNCiMgRG8gbm90IG1vZGlmeQ0KdCA8LSB0aWJibGUoDQogIGlkID0gMToxMDAsDQogIHJlZ2lvbiA9IHJlcChjKCdXVicsICdWQScsICdDQScsICdUWCcsICdGTCcpLCAyMCksDQogIHNhbGVzID0gKDEgKyBydW5pZigxMDApKSBeIDQNCikNCg0KdFsxLCBdJHNhbGVzIDwtIE5BDQp0WzIsIF0kcmVnaW9uIDwtIE5BDQoNCnN0YXRlX25hbWVzIDwtIHRpYmJsZSgNCiAgcmVnaW9uID0gYygnV1YnLCAnVkEnLCAnQ0EnLCAnVFgnLCAnRkwnKSwNCiAgc3RhdGVfbmFtZSA9IGMoJ1dlc3QgVmlyZ2luaWEnLCAnVmlyZ2luaWEnLCAnQ2FsaWZvcm5pYScsICdUZXhhcycsICdGbG9yaWRhJykNCikNCg0KYGBgDQoNCiMjIFEyYSAoMjAgcG9pbnRzKQ0KDQpDcmVhdGUgYSB0aWJibGUgY2FsbGVkIFdWIHNhbGVzIHRoYXQgc2hvd3MgYWxsIHNhbGVzIGZvciB0aGF0IHN0YXRlLg0KUGxhY2UgdGhlIHJvd3MgaW4gb3JkZXIgYnkgc2FsZXMuDQpSb3VuZCBzYWxlcyB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyICh3aG9sZSBudW1iZXIpDQpFeGNsdWRlIGFueSB2YWx1ZXMgdGhhdCBhcmUgbGVzcyB0aGFuIDUuDQoNCmBgYCB7cn0NCnd2X3NhbGVzIDwtIHQgJT4lIA0KICBzZWxlY3Qoc2FsZXMsIHJlZ2lvbiwgaWQpICU+JSANCiAgbGVmdF9qb2luKHN0YXRlX25hbWVzLCBieSA9ICdyZWdpb24nKSAlPiUgDQogIG11dGF0ZShzYWxlc19yb3VuZGVkID0gcm91bmQoc2FsZXMpKSAlPiUgDQogIGZpbHRlcihzYWxlc19yb3VuZGVkID49IDUpICU+JSANCiAgYXJyYW5nZShzYWxlcykNCg0KcHJpbnQod3Zfc2FsZXMpDQpgYGANCg0KIyMgUTJiICgyMCBwb2ludHMpDQoNCkNyZWF0ZSBhIHRpYmJsZSBjYWxsZWQgc2FsZXMgc3VtbWFyeSB0aGF0IHNob3dzIGdyb3VwZWQgc2FsZXMgZm9yIGVhY2ggc3RhdGUuDQoNCkpvaW4gaXQgd2l0aCB0aGUgc3RhdGUgbmFtZXMgdGliYmxlLg0KDQpTaG93IHRoZSBtZWRpYW4gc2FsZXMgYnkgc3RhdGUgbmFtZS4gQmUgc3VyZSB0byBmaXggYW55IGlzc3VlcyB3aXRoIE5BIHZhbHVlcy4NCg0KYGBgIHtyfQ0KDQpzYWxlc19zdW1tYXJ5IDwtIHQgJT4lIA0KICBzZWxlY3Qoc2FsZXMsIHJlZ2lvbikgJT4lIA0KICBsZWZ0X2pvaW4oc3RhdGVfbmFtZXMsIGJ5ID0gJ3JlZ2lvbicpICU+JSANCiAgZ3JvdXBfYnkoc3RhdGVfbmFtZSkgJT4lIA0KICBtdXRhdGUobWVkX3NhbGVzX3N0YXRlID0gbWVkaWFuKGBzYWxlc2ApKSAlPiUgDQogIGZpbHRlcighaXMubmEobWVkX3NhbGVzX3N0YXRlKSkgJT4lIA0KICBhcnJhbmdlKHN0YXRlX25hbWUpDQogICAgICAgICAgICAgDQogICAgICAgICAgDQpwcmludChzYWxlc19zdW1tYXJ5KQ0KYGBgDQoNCg0KDQojIyBRMmMgKDEwIHBvaW50cykNCg0KVXNlIGdncGxvdCB0byBjcmVhdGUgYSBib3ggcGxvdCBvZiB0aGUgdCB0aWJibGUuIFNob3cgcmVnaW9uIGFzIHgsIGFuZCBzYWxlcyBhcyB5Lg0KYGBge3J9DQoNCmdncGxvdChkYXRhID0gdCkgKw0KICBnZW9tX2JveHBsb3QobWFwcGluZyA9IGFlcyh4ID0gcmVnaW9uLCB5ID0gc2FsZXMpKQ0KDQoNCg0KYGBgDQoNCiMjIFEzICgxMCBwb2ludHMpDQoNClRoZXJlIGFyZSBzaWduaWZpY2FudCBkaWZmZXJlbmNlcyBiZXR3ZWVuIGFjY3VyYWN5LCBwcmVjaXNpb24sIGFuZCByZWNhbGwuIFdoaWNoIG1lYXN1cmUgd2Ugd291bGQgY2FyZSBtb3N0IGFib3V0IGluIHRoZSBmb2xsb3dpbmcgc2l0dWF0aW9uczoNCg0KYSkgSW52ZXN0aWdhdGluZyBmcmF1ZC4gV2UgKm5ldmVyKiB3YW50IHRvIG1pc3MgYSBjYXNlLCBldmVuIGlmIHdlIGhhdmUgdG8gaW52ZXN0aWdhdGUgYSBsb3Qgb2YgZmFsc2UgcG9zaXRpdmVzLg0KDQphY2N1cmFjeQ0KDQpiKSBTY3JlZW5pbmcgZm9yIGEgbWlub3IgbWVkaWNhbCBjb25kaXRpb24uIFdlIHdhbnQgdG8gYmFsYW5jZSBmYWxzZSBwb3NpdGl2ZXMgYW5kIGZhbHNlIG5lZ2F0aXZlcyBlcXVhbGx5Lg0KDQpyZWNhbGwNCg0KYykgVGVzdGluZyBiZWZvcmUgZ2l2aW5nIGEgZGlmZmljdWx0IGNoZW1vdGhlcmFweSB0cmVhdG1lbnQuIFdlICpuZXZlciogd2FudCB0byBnaXZlIHRoaXMgdHJlYXRtZW50IHVubGVzcyBpdCBpcyBhYnNvbHV0ZWx5IG5lY2Vzc2FyeS4NCg0KcHJlY2lzaW9u