PHP 2511 HW3 Code Template
Spring 2025
Instructions: You may use this template to write code needed to answer the questions for your homework assignment. Additional R chunks can be added. Include brief comments to explain the code written. You may write your answers in the white space below the R chunks corresponding to the specific question.
Use the kidney small. csv dataset and statistical software to answer the questions below.
Question 1. Read in the data and split the data into two sets to create a train and test data set. This code is provided in the code template.
(a) Fit four regression models using these formulas
1. ‘mod1
|
< −
|
log(gfr) ~ baseu + bascre + sbase + dbase + age + male ’
|
2. ‘mod2
|
< −
|
log(gfr) ~ log(baseu) + bascre + sbase + dbase + age + male ’
|
3. ‘mod3
|
< −
|
log(gfr) ~ baseu + log(bascre) + sbase + dbase + age + male ’
|
4. ‘mod4
|
< −
|
log(gfr) ~ log(baseu) + log(bascre) + sbase + dbase + age + male ’
|
(b) Determine whether you should log transform. either bascre and/or baseu. To do so, report the Adjusted R Squared and AIC for each model. Explain why the investigator would use these two measures to compare these models, comment on the results, and explain why model 4 would be chosen using these criteria. Write about 4-6 sentences explaining your results.
Solution: Write here
Question 2. The investigator considers variable selection. The investigator decides to drop both sbase and dbase variables from model 4 by finding the corresponding AIC value when dropping each variable. Additionally, the investigator uses a nested hypothesis to test this decision.
(a) Calculate AIC for the models when sbase and dbase variables are removed from model 4. Note that you should have 3 AIC values for 3 cases: when only sbase is dropped (call this mod4), when dbase is dropped (call this mod5), and when both sbase and dbase variables are dropped (call this mod6).
Solution: Write here
(b) Explain what the null hypothesis and alternative hypothesis is for the nested hypothesis test and comment on the results in 2-4 sentences.
Solution: Write here
(c) Interpret the coefficients for the model when both sbase and dbase are dropped. Be sure to take into account that a log transformation is used for the outcome and/or predictors.
Solution: Write here
Question 3. (BONUS) Using mod6 defined in Question 2, the investigator considers a polynomial trans- formation for serum creatinine.
(a) Plot the residuals vs log serum creatinine from mod6. What do you observe? Write 2-3 sentences. Solution: Write here
(b) Consider a polynomial transformation for log serum creatinine. Be sure to explain how you are choosing the degree for your polynomial transformation. Using AIC as the model selection criteria, explain what polynomial transformation you recommend? Write 2-3 sentences.
Solution: Write here
Question 4. Evaluate your final model from Question 3.
(a) Use MAE and RMSE on both the training set and the withheld test set and compare the results. Write 2-3 sentences.
Solution: Write here
(b) Discuss what you observe related to the bias-variance trade-off discussed in class. Write 2-3 sentences. Solution: Write here
(c) Assess the diagnostic plots for your resulting model from the training and testing sets (you may limit yourself to the four default plots in R in this discussion). Write 2-3 sentences.
Solution: Write here
(d) Relate these results to the motivating question: overall how useful do you think your model would be for predicting GFR in practice? Write 2-3 sentences.
Solution: Write here
Use the tb kharitode. csv and tb stomp. csv dataset and statistical software to answer the questions below.
Question 5.
(a) Fit an initial model (Model 1) containing all variables as predictors.
(b) Perform. backwards stepwise selection using AIC to determine whether or not to remove any variables from the model (we will refer to the resulting model as Model 2). Explain how stepwise selection makes its decisions in iteration and comment on the results. Hint: To do backwards stepwise selection on a model in R you can run step(mod), where mod is the name of the model object.
(c) Use a likelihood ratio test to test the difference between the two models and interpret the results. Question 6. Use ‘Model 2’ from Question 5 to answer the following questions.
Next, we will look at interpreting the estimated model and also consider a possible interaction.
(a) Interpret the estimated coefficients for Model 2.
(b) Consider a possible interaction between HIV status and one other variable by using the variable definitions and the model output. Add this interaction to the model (Model 3) and interpret the coefficients for the two variables and their interaction (you do not have to interpret the intercept or coefficients for variables not involved in the interaction).
(c) Determine whether or not you will keep this interaction in the model and justify your decision.
(d) Interpret the coefficients for the two variables and their interaction (you do not have to interpret the intercept or coefficients for variables not involved in the interaction).
Code Appendix
# false means only show code in Appendix . If "TRUE" then the code after each chunk in the PDF
knitr ::opts_chunk$set(echo = FALSE)
# a few settings we define for the file
knitr ::opts_chunk$set(message = F)
knitr ::opts_chunk$set(warning = F)
knitr::opts_chunk$set(fig.height = 4)
knitr::opts_chunk$set(fig .width = 6)
knitr::opts_chunk$set(fig.align="center") `%notin%` <- Negate(`%in%`)
#load packages
library (tidyverse) # general data manipulation
library (tableone) # creating table summaries of the data
library(GGally) # for creating graphics library (knitr) # for knitting pdf
library (dplyr) # to create descriptive tables of the data library(MASS) # for the boxcox() function
library (haven) # for reading dt a files
library (broom) # This package is helpful for summarizing objects (or data) in tibble format making it e
library(Metrics) #This package includes functions to calculate MAE and RMSE.
library (broom) # to format glm/lm output library (lmtest) # likelihood ratio tests library (caret) # confusion matrix
library (glmtoolbox) # goodness-of-fit test library (predtools) # calibration plot
library(pROC) # ROC and AUC
library(kableExtra)
library (dplyr)
library (gt)
theme_set (theme_minimal ())
set.seed (1)
kidney_df <- read.csv ("kidney_small.csv")
kidney_df$id <- 1:nrow(kidney_df)
kidney_train <- kidney_df %>% dplyr ::sample_frac (0.75)
kidney_test <- dplyr ::anti_join (kidney_df, kidney_train, by = ' id ' )
# add your code here # add code here
# add code here
# add code here
# add code here
# add code here
# add code here
# add code here
# add code here
# add code here
# load train and test data
train_df <- read.csv ( "tb_kharitode.csv")
test_df <- read.csv ( "tb_stomp.csv")
# Create summary table
# Fit model 1
# Add code here # Add code here
# Add code here
# Add code here
# Add code here
# Add code here
# Add code here