one_way_ave {prettyglm} | R Documentation |
one_way_ave
Description
Creates a pretty html plot of one way actual vs expected by specified predictor.
Usage
one_way_ave(
feature_to_plot,
model_object,
target_variable,
data_set,
plot_type = "predictions",
plot_factor_as_numeric = FALSE,
ordering = NULL,
width = 800,
height = 500,
number_of_buckets = 30,
first_colour = "black",
second_colour = "#cc4678",
facetby = NULL,
prediction_type = "response",
predict_function = NULL,
upper_percentile_to_cut = 0.01,
lower_percentile_to_cut = 0
)
Arguments
feature_to_plot |
A string of the variable to plot. |
model_object |
Model object to create coefficient table for. Must be of type: glm, lm |
target_variable |
String of target variable name in dataset. |
data_set |
Data set to calculate the actual vs expected for. If no input default is to try and extract training data from model object. |
plot_type |
one of "Residual", "predictions" or "actuals" defaults to "predictions" |
plot_factor_as_numeric |
Set to TRUE to return data.frame instead of creating kable. |
ordering |
Option to change the ordering of categories on the x axis, only for discrete categories. Default to the ordering of the factor. Other options are: 'alphabetical', 'Number of records', 'Average Value' |
width |
Width of plot |
height |
Height of plot |
number_of_buckets |
Number of buckets for continuous variable plots |
first_colour |
First colour to plot, usually the colour of actual. |
second_colour |
Second colour to plot, usually the colour of predicted. |
facetby |
Variable to facet the actual vs expect plots by. |
prediction_type |
Prediction type to be pasted to predict.glm if predict_function is NULL. Defaults to "response". |
predict_function |
A custom prediction function can be provided here.It must return a data.frame with an "Actual_Values" column, and a "Predicted_Values" column. |
upper_percentile_to_cut |
For continuous variables this is what percentile to exclude from the upper end of the distribution. Defaults to 0.01, so the maximum percentile of the variable in the plot will be 0.99. Cutting off some of the distribution can help the views if outlier's are present in the data. |
lower_percentile_to_cut |
For continuous variables this is what percentile to exclude from the lower end of the distribution. Defaults to 0.01, so the minimum percentile of the variable in the plot will be 0.01. Cutting off some of the distribution can help the views if outlier's are present in the data. |
Value
plotly plot of one way actual vs expected.
Examples
library(dplyr)
library(prettyglm)
data('titanic')
columns_to_factor <- c('Pclass',
'Sex',
'Cabin',
'Embarked',
'Cabintype',
'Survived')
meanage <- base::mean(titanic$Age, na.rm=TRUE)
titanic <- titanic %>%
dplyr::mutate_at(columns_to_factor, list(~factor(.))) %>%
dplyr::mutate(Age =base::ifelse(is.na(Age)==TRUE,meanage,Age)) %>%
dplyr::mutate(Age_0_25 = prettyglm::splineit(Age,0,25),
Age_25_50 = prettyglm::splineit(Age,25,50),
Age_50_120 = prettyglm::splineit(Age,50,120)) %>%
dplyr::mutate(Fare_0_250 = prettyglm::splineit(Fare,0,250),
Fare_250_600 = prettyglm::splineit(Fare,250,600))
survival_model <- stats::glm(Survived ~
Sex:Age +
Fare +
Embarked +
SibSp +
Parch +
Cabintype,
data = titanic,
family = binomial(link = 'logit'))
# Continuous Variable Example
one_way_ave(feature_to_plot = 'Age',
model_object = survival_model,
target_variable = 'Survived',
data_set = titanic,
number_of_buckets = 20,
upper_percentile_to_cut = 0.1,
lower_percentile_to_cut = 0.1)
# Discrete Variable Example
one_way_ave(feature_to_plot = 'Pclass',
model_object = survival_model,
target_variable = 'Survived',
data_set = titanic)
# Custom Predict Function and facet
a_custom_predict_function <- function(target, model_object, dataset){
dataset <- base::as.data.frame(dataset)
Actual_Values <- dplyr::pull(dplyr::select(dataset, tidyselect::all_of(c(target))))
if(class(Actual_Values) == 'factor'){
Actual_Values <- base::as.numeric(as.character(Actual_Values))
}
Predicted_Values <- base::as.numeric(stats::predict(model_object, dataset, type='response'))
to_return <- base::data.frame(Actual_Values = Actual_Values,
Predicted_Values = Predicted_Values)
to_return <- to_return %>%
dplyr::mutate(Predicted_Values = base::ifelse(Predicted_Values > 0.3,0.3,Predicted_Values))
return(to_return)
}
one_way_ave(feature_to_plot = 'Age',
model_object = survival_model,
target_variable = 'Survived',
data_set = titanic,
number_of_buckets = 20,
upper_percentile_to_cut = 0.1,
lower_percentile_to_cut = 0.1,
predict_function = a_custom_predict_function,
facetby = 'Pclass')