ass.tile <- function (df = ds, df_train = ds1, df_test = ds2, prob = "p_",
tile_name = "p_Tile", model = NULL, model_var = "X1", assign_data = "all",
n = 10, TrainIndex = "TrainIndex")
{
all <- deparse(substitute(df))
df <- as.data.frame(df)
# Assign Predictions
if (class(model) == "NULL") {
train <- df[df[, TrainIndex] == 1, ]
test <- df[df[, TrainIndex] == 0, ]
}
else if (class(model)[1] == "glm") {
df[, prob] <- predict(model, df, type = "response")
train <- df[df[, TrainIndex] == 1, ]
test <- df[df[, TrainIndex] == 0, ]
}
else if (class(model)[1] == "train") {
if (is.null(model_var)) {
df[, prob] <- predict(model, df)
}
else {
df[, prob] <- predict(model, df, type = "prob")[, model_var]
}
train <- df[df[, TrainIndex] == 1, ]
test <- df[df[, TrainIndex] == 0, ]
}
#================================================================================#
# Assign Tiles
train[, tile_name] <- ntile(train[, prob], n = n)
df[, tile_name] <- 0
df[between(df[, prob], -Inf, max(train[train[, tile_name] ==
1, prob])), tile_name] <- 1
for (i in 2:(n - 1)) {
df[between(df[, prob], max(train[train[, tile_name] ==
i - 1, prob]) + 1e-08, max(train[train[, tile_name] ==
i, prob])), tile_name] <- i
}
df[between(df[, prob], (max(train[train[, tile_name] == n -
1, prob]) + 1e-08), Inf), tile_name] <- n
#================================================================================#
train <- df[df[, TrainIndex] == 1, ]
test <- df[df[, TrainIndex] == 0, ]
# Assign to Datasets
if (assign_data == "all") {
assign(all, df, envir = .GlobalEnv)
assign(deparse(substitute(df_train)), train, envir = .GlobalEnv)
assign(deparse(substitute(df_test)), test, envir = .GlobalEnv)
list(Train = table(train[, tile_name]), Test = table(test[, tile_name]))
}
else if (assign_data == "main_only") {
assign(all, df, envir = .GlobalEnv)
list(All = table(df[, tile_name]))
}
else if (assign_data == "none") {
df[, tile_name]
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.