Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Needed libraries
- library(ggplot2)
- library(tidyverse)
- library(purrr)
- library(broom)
- library(survival)
- #Create data set
- mpg_data <- mpg
- mpg_data <- mpg_data %>%
- mutate(mpg_diff = cty - hwy)
- mpg_data <- mpg_data %>%
- mutate(EVENT = (mpg_diff >= -8))
- set.seed(1)
- mpg_data <- mpg_data %>%
- mutate(TIME_TO_EVENT = as.integer(runif(234, 1, 100)))
- mpg_nested <- mpg_data %>%
- group_by(manufacturer) %>%
- mutate(n_prot = length(model)) %>%
- nest()
- # Stepwise regression
- stepwise <- function(data) {
- response <- Surv(time = data$TIME_TO_EVENT, event = data$EVENT, type = "right")
- full <- "Surv(time = data$TIME_TO_EVENT, event = data$EVENT, type = 'right') ~ data$cyl+data$cty+data$hwy+data$displ"
- x <- factor(as.factor(data$model))
- full <- ifelse(nlevels(x) >= 2, paste(full, "as.character(data$model)", sep = "+"), full)
- x <- factor(as.factor(data$trans))
- full <- ifelse(nlevels(x) >= 2, paste(full, "as.character(data$trans)", sep = "+"), full)
- x <- factor(as.factor(data$drv))
- full <- ifelse(nlevels(x) >= 2, paste(full, "as.character(data$drv)", sep = "+"), full)
- null_model_ONE <- coxph(response ~ 1, data=data)
- full_model_ONE <- coxph(as.formula(full), data=data)
- model_ONE <- step(null_model_ONE, scope=list(lower=null_model_ONE, upper=full_model_ONE))
- }
- survival_mpg <- mpg_nested %>%
- mutate(model_fit = map(data, stepwise))
- #Predicting values
- #This works but is not type="expected"
- survival_mpg_predict <- survival_mpg %>%
- mutate(mpg_predict = map2(model_fit, data, predict))
- ##TRY 1##
- predict.F <- function(model_fit, data){
- predict(model_fit, newdata=data, type="expected")
- }
- survival_mpg_predict <- survival_mpg %>%
- mutate(mpg_predict = map2(model_fit, data, predict.F))
- #Error in mutate_impl(.data, dots) : Evaluation error: requires numeric/complex matrix/vector arguments.
- ##Try 2##
- survival_mpg_predict <- survival_mpg %>%
- mutate(mpg_predict = map2(model_fit, data, predict(model_fit, newdata = data, type="expected")))
- #Error in mutate_impl(.data, dots) : Evaluation error: no applicable method for 'predict' applied to an object of class "list".
- ##Try 3##
- survival_mpg_predict <- survival_mpg %>%
- mutate(mpg_predict = map2(model_fit, data, ~ predict(.x, newdata = .y, type="expected")))
- #Error in mutate_impl(.data, dots) : Evaluation error: requires numeric/complex matrix/vector arguments.
- ##Try 4##
- survival_mpg_predict <- survival_mpg %>%
- mutate(mpg_predict = map2(model_fit, data, function(model_fit, data) predict(model_fit, newdata=data, type="expected")))
- #Error in mutate_impl(.data, dots) : Evaluation error: requires numeric/complex matrix/vector arguments.
- predict.F <- function(model_fit, data){
- predict(model_fit, type="expected")
- }
- survival_mpg_predict <- survival_mpg %>%
- mutate(mpg_predict = map(model_fit, predict.F))
Add Comment
Please, Sign In to add comment