#' Prepare figures for small exercises about the high-low method of cost estimation.
#' @param rev Numeric A revenue.
#' @param cm Numeric. A contribution margin.
#' @param oi Numeric. An operating income.
#' @return A list with the base for the computation, the solution, the wrong_oplev, wrong_msr, wrong_newrev and wrong_newoi
#' @export
cvp_oplev <- function(rev, cm, oi){
pctdeltarev <- sample(seq(from = 0.01, to = 0.15, by = 0.01), 1) * sample(c(1,-1),1)
fc <- cm - oi
cmr <- round(cm/rev,4)
bkrev <- round(fc / cmr, 2)
ms <- rev - bkrev
msr <- round(ms / rev, 4)
oplev <- round(cm / oi, 2)
pctdeltaoi <- round(oplev * pctdeltarev, 2)
deltarev <- round(rev * pctdeltarev, 2)
deltaoi <- round(oi * pctdeltaoi, 2)
newrev = rev + deltarev
newoi = oi + deltaoi
newcm = newoi + fc
newoplev <- round(newcm / newoi, 2)
base <- data.frame(
rev = c(rev, newrev),
cm = c(cm, newcm),
oi = c(oi, newoi),
ms = c(rev - bkrev, newrev - bkrev),
msr = round(c((rev - bkrev)/rev, (newrev - bkrev)/newrev),4),
oplev = c(oplev, newoplev)
)
solution <- c(
pctdeltarev = round(pctdeltarev,4),
rev = rev,
bkrev = bkrev,
ms = ms,
msr = msr,
oplev = oplev,
newrev = newrev,
newoi = newoi
)
wrong_oplev <- c(
woplev1 = rev / oi,
woplev2 = rev / cm,
woplev3 = rev / (rev-cm),
woplev4 = rev / fc,
woplev5 = cm / fc,
woplev6 = cm / (rev-cm),
woplev7 = newoplev
)
wrong_msr = 1 / wrong_oplev
wrong_newrev = rev * (1 + pctdeltaoi / wrong_oplev)
wrong_newoi = rev * (1 + pctdeltarev * wrong_oplev)
wrong_oplev <- unique(setdiff(round(wrong_oplev, 2), solution["oplev"]))
wrong_msr <- unique(setdiff(round(wrong_msr, 2), solution["msr"]))
wrong_newrev <- unique(setdiff(round(wrong_newrev, 2), solution["newrev"]))
wrong_newoi <- unique(setdiff(round(wrong_newoi, 2), solution["newoi"]))
results <- list(
base = base,
solution = solution,
wrong_oplev = wrong_oplev,
wrong_msr = wrong_msr,
wrong_newrev = wrong_newrev,
wrong_newoi = wrong_newoi
)
return(results)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.