Nothing
.reg.Rmd <-
function(nm, dname, fun_call, n_res_rows, n_pred_rows, res_sort, d.ancova,
digits_d, results, explain, interpret, code,
pvalues, tolerances, resid.max, X1_new,
new.val=matrix(nrow=n.vars-1, ncol=2, byrow=TRUE),
Rmd_data, Rmd_custom, Rmd_dir, Rmd_labels) {
# simplify function call
fncl <- .fun_call.deparse(fun_call)
if (regexec("Rmd", fncl)[1] > 0) fc <- .rm.arg("Rmd", fncl)
if (regexec("explain", fc)[1] > 0) fc <- .rm.arg.ns("explain", fc)
if (regexec("interpret", fc)[1] > 0) fc <- .rm.arg.ns("interpret", fc)
if (regexec("results", fc)[1] > 0) fc <- .rm.arg.ns("results", fc)
n.vars <- length(nm)
n.pred <- n.vars - 1
# ---------------------------
# functions to be interpreted
# ---------------------------
lbls <- function(the.lbl) {
paste("\n------\n\n", "<span style='color:maroon;'>**", the.lbl,
"**</span>\n", sep="")
}
eq.model_b <- function() {
cv <- paste("<span style='color:maroon;'>", "eq.model_b", "</span>")
cv <- paste(cv, "$$\\hat Y_{", Y, "} = b_0 + b_1 X_{", nm[2], "}", sep="")
if (n.vars > 2)
for (i in 3:n.vars)
cv <- paste(cv, " + b_", i-1, " X_{", nm[i], "}", sep="")
cv <- paste(cv, "$$", sep="")
}
eq.model_beta <- function() {
cv <- paste("<span style='color:maroon;'>", "eq.model_beta", "</span>")
cv <- paste(cv,
"$$\\hat Y_{", Y, "} = \\beta_0 + \\beta_1 X_{", nm[2], "}",
sep="")
if (n.vars > 2)
for (i in 3:n.vars)
cv <- paste(cv, " + \\beta_", i-1, " X_{", nm[i], "}", sep="")
cv <- paste(cv, "$$", sep="")
}
eq.model_est <- function() {
cv <- paste("<span style='color:maroon;'>", "eq.model_est", "</span>")
cv <- paste(cv,
"$$\\hat Y_{", Y, "} = `r xP(r$coefficients[1],", d_d, ")` ",
"`r ifelse(sign(r$coefficients)==1, \"+\", \"-\")[2]` ",
"`r xP(abs(r$coefficients[2]),", d_d, ")` X_{", nm[2], "}",
sep="")
if (n.vars > 2) {
for (i in 3:n.vars)
cv <- paste(cv,
"`r ifelse(sign(r$coefficients)==1, \"+\", \"-\")[", i, "]` ",
" `r xP(abs(r$coefficients[", i, "]),", d_d, ")`",
" X_{", nm[i], "}", "\n",
sep="")
}
cv <- paste(cv, "$$")
return(cv)
}
eq.resid <- function() {
cv <- paste("<span style='color:maroon;'>", "eq.resid", "</span>")
cv <- paste(cv, "$$e_i = Y_i - \\hat Y_i$$", sep="")
}
in.read <- function() {
out <- paste("<span style='color:maroon;'>", "in.read", "</span>\n")
out <- paste(out, "```{r", show, "}", "\n", sep="")
out <- paste(out, dname, " <- ", rdcall, "\n", sep="")
out <- paste(out, "```", "\n", sep="")
}
in.reg <- function() {
locTRUE <- regexec("graphics = TRUE", fc)
if (locTRUE == -1) {
loc <- regexec("graphics = FALSE", fc)
if (loc == -1) fc <- sub(")$", ", graphics = FALSE)", fc)
}
out <- paste("<span style='color:maroon;'>", "in.reg", "</span>\n")
out <- paste(out, "```{r", show, "}", "\n", sep="")
out <- paste(out, "r <-", fc, "\n", sep="")
out <- paste(out, "```", "\n", sep="")
}
out.bck <- function() {
out <- paste("<span style='color:maroon;'>", "out.bck", "</span>\n")
out <- paste(out, "```{r", show, "}", "\n", sep="")
out <- paste(out, "r$out_background", "\n", sep="")
out <- paste(out, "```", "\n", sep="")
}
out.ANOVA <- function() {
out <- paste("<span style='color:maroon;'>", "out.ANOVA", "</span>\n")
out <- paste(out, "```{r", show, "}", "\n", sep="")
out <- paste(out, "r$out_anova", "\n", sep="")
out <- paste(out, "```", "\n", sep="")
}
out.estimates <- function() {
out <- paste("<span style='color:maroon;'>", "out.estimates", "</span>\n")
out <- paste(out, "```{r", show, "}", "\n", sep="")
out <- paste(out, "r$out_estimates", "\n", sep="")
out <- paste(out, "```", "\n", sep="")
}
plot.scatter <- function() {
out <- "\n"
out <- paste(out, "```{r echo=FALSE}\n", sep="")
out <- paste(out, "regPlot(r, 1, d.ancova, pred.intervals=FALSE)\n", sep="")
out <- paste(out, "```", "\n", sep="")
}
plot.sp_pred <- function() {
out <- "\n"
out <- paste(out, "```{r echo=FALSE}\n", sep="")
out <- paste(out, "regPlot(r, 1, d.ancova, pred.intervals=TRUE)\n", sep="")
out <- paste(out, "```", "\n", sep="")
}
plot.resids_dist <- function() {
out <- "\n"
out <- paste(out, "```{r echo=FALSE}\n", sep="")
out <- paste(out, "regPlot(r, 2, d.ancova)\n", sep="")
out <- paste(out, "```", "\n", sep="")
}
plot.fitted_resids <- function() {
out <- "\n"
out <- paste(out, "```{r echo=FALSE}\n", sep="")
out <- paste(out, "regPlot(r, 3, d.ancova)\n", sep="")
out <- paste(out, "```", "\n", sep="")
}
out.collinear <- function() {
out <- paste("<span style='color:maroon;'>", "out.collinear", "</span>\n")
out <- paste(out, "```{r", show, "}", "\n", sep="")
out <- paste(out, "r$out_collinear", "\n", sep="")
out <- paste(out, "```", "\n", sep="")
}
eq.decomp <- function() {
out <- paste("<span style='color:maroon;'>", "eq.decomp", "</span>")
out <- paste(out, "$$SS_{", `Y`, "} = SS_{Model} + SS_{Residual}")
out <- paste(out, " = `r xP(r$anova_model[\"ss\"],", d_d, ")`", sep="")
out <- paste(out, " + `r xP(r$anova_residual[\"ss\"],", d_d, ")`", sep="")
out <- paste(out,
"= `r xP(r$anova_total[\"ss\"],", d_d,",", uYq, ", semi=TRUE)` $$")
}
eq.model_decomp <- function() {
out <- paste("<span style='color:maroon;'>", "eq.model_decomp", "</span>")
out <- paste(out, "$$SS_{Model}")
for (i in 2:n.vars) out <- paste(out, " + SS_{", nm[i], "}", sep="")
out <- paste(out, " = `r xP(r$anova_model[\"ss\"],", d_d, ")`$$", sep="")
out <- sub("+", "=", out, fixed=TRUE)
}
eq.se <- function() {
out <- paste("<span style='color:maroon;'>", "eq.se", "</span>")
out <- paste(out, "$$s_e = ")
out <- paste(out, "\\sqrt{MS_{Residual}} = ")
out <- paste(out, "\\sqrt{`r xP(r$anova_residual[\"ms\"],", d_d, ")`} = ",
sep="")
out <- paste(out, "`r xP(r$se,", d_d, ",", uYq, ", semi=TRUE)`$$", sep="")
}
eq.se_range <- function() {
out <- paste("<span style='color:maroon;'>", "eq.se_range", "</span>")
out <- paste(out, "$$95\\% \\; Range \\; of \\; Variation:",
"2 * t_{cutoff} * s_e = ")
out <- paste(out, "2 * `r xP(-qt(0.025, df=r$anova_residual[\"df\"]),3)` * `r xP(r$se,", d_d, ")`")
out <- paste(out, "= `r xP(r$resid_range,", d_d, ",", uYq, ", semi=TRUE)`$$", sep="")
}
eq.R2 <- function() {
out <- paste("<span style='color:maroon;'>", "eq.R2", "</span>")
out <- paste(out, "$$R^2 = 1 - \\frac{SS_{Residual}}{SS_{", Y, "}} = ")
out <- paste(out, "1 - \\frac{`r xP(r$anova_residual[\"ss\"],", d_d, ")`} ")
out <- paste(out, "{`r xP(r$anova_total[\"ss\"],", d_d, ")`} = ")
out <- paste(out, "`r xP(r$Rsq,3)` $$ ")
}
eq.R2adj <- function() {
out <- paste("<span style='color:maroon;'>", "eq.R2adj", "</span>")
out <- paste(out, "$$R^2_{adj} = 1 - \\frac{MS_{Residual}}{MS_{", Y, "}} = ")
out <- paste(out, "1 - \\frac{SS_{Residual} \\; / \\;
`r r$anova_residual[\"df\"]`} {SS_{", Y, "} \\; / \\;
`r r$anova_total[\"df\"]`} = ")
out <- paste(out, "1 - \\frac{`r xP(r$anova_residual[\"ms\"],", d_d, ")`} ")
out <- paste(out, "{`r xP(r$anova_total[\"ms\"],", d_d, ")`} = ")
out <- paste(out, "`r xP(r$Rsqadj,3)` $$ ")
}
eq.R2press <- function() {
out <- paste("<span style='color:maroon;'>", "eq.R2press", "</span>")
out <- paste(out, "$$R^2_{PRESS} = 1 - \\frac{SS_{PRE}}{SS_{", Y, "}} = ")
out <- paste(out, "1 - \\frac{`r xP(r$PRESS,", d_d, ")`} ",
"{`r xP(r$anova_total[\"ss\"],", d_d, ")`} = ", sep="")
out <- paste(out, "`r xP(r$RsqPRESS,3)` $$ ")
}
eq.multNull <- function() {
cv <- paste("\\beta_{", nm[2], "} = \\beta_{", nm[3], "}", sep="")
if (n.vars > 2)
for (i in 4:n.vars)
cv <- paste(cv, " = \\beta_{", nm[i], "}", sep="")
out <- paste("<span style='color:maroon;'>", "eq.multNull", "</span>")
out <- paste(out, "\n",
"\\begin{aligned}\n",
"H_0&: \\;", cv, "= 0\\\\",
"H_1&: \\; at \\; least \\; one \\; \\beta_j \\ne 0",
"\\end{aligned}"
)
}
eq.mult2Null <- function() {
cv <- paste("\\beta_{", nm[n.vars-1], "} = \\beta_{", nm[n.vars], "}", sep="")
out <- paste("<span style='color:maroon;'>", "eq.mult2Null", "</span>")
out <- paste(out, "\n$$\n",
"\\begin{aligned}\n",
"H_0&: \\;", cv, "=0\\\\",
"H_1&: \\; at \\; least \\; one \\; \\beta_j \\ne 0",
"\\end{aligned}\n",
"$$")
}
in.nest <- function() {
cv <- "n <- Nest("
cv <- paste(cv, nm[1], ", c(", sep="")
for (i in 2:(n.vars-2)) {
txt <- ","
if (i == n.vars-2) txt <- ")"
cv <- paste(cv, nm[i], txt, sep="")
}
cv <- paste(cv,", c(", nm[n.vars-1], ", ", nm[n.vars],"))", sep="")
out <- paste("<span style='color:maroon;'>", "in.nest", "</span>\n")
out <- paste(out, "```{r", show, "}", "\n", sep="")
out <- paste(out, cv, "\n", sep="")
out <- paste(out, "```", "\n", sep="")
}
out.fit <- function() {
out <- paste("<span style='color:maroon;'>", "out.fit", "</span>\n")
out <- paste(out, "```{r", show, "}", "\n", sep="")
out <- paste(out, "r$out_fit", "\n")
out <- paste(out, "```", "\n", sep="")
}
out.nest <- function() {
out <- paste("<span style='color:maroon;'>", "out.nest", "</span>\n")
out <- paste(out, "```{r", show, "}", "\n", sep="")
out <- paste(out, "n$out_models", "\n")
out <- paste(out, "```", "\n", sep="")
}
out.av_nest <- function() {
out <- paste("<span style='color:maroon;'>", "out.av_nest", "</span>\n")
out <- paste(out, "```{r", show, "}", "\n", sep="")
out <- paste(out, "n$out_anova", "\n")
out <- paste(out, "```", "\n", sep="")
}
out.predict <- function() {
out <- paste("<span style='color:maroon;'>", "out.predict", "</span>\n")
out <- paste(out, "```{r", show, "}", "\n", sep="")
out <- paste(out, "r$out_predict", "\n")
out <- paste(out, "```", "\n", sep="")
}
out.subsets <- function() {
out <- paste("<span style='color:maroon;'>", "out.subsets", "</span>\n")
out <- paste(out, "```{r", show, "}", "\n", sep="")
out <- paste(out, "r$out_subsets", "\n")
out <- paste(out, "```", "\n", sep="")
}
out.residuals <- function() {
out <- paste("<span style='color:maroon;'>", "out.residuals", "</span>\n")
out <- paste(out, "```{r", show, "}", "\n", sep="")
out <- paste(out, "r$out_residuals", "\n")
out <- paste(out, "```", "\n", sep="")
}
eq.s_pred <- function() {
out <- paste("<span style='color:maroon;'>", "eq.s_pred", "</span>")
out <- paste(out, "$$s_{\\hat Y_{p,i}} = \\sqrt{s^2_e + s^2_{\\hat Y_{p,i}}}$$")
}
intr.tolerance <- function() {
out <- ""
l20 <- length(which(tolerances < 0.20))
if (l20 > 1)
hh <- "s have tolerances"
else
hh <- " has a tolerance"
if (l20 > 0)
out <- paste(
"Collinearity is indicated. ",
xU(xNum(l20)), " variable", hh, " less than the ",
"cutoff of 0.20: ", # r$tolerances has no names, so get them at r$model
"`r xAnd(names(r$model[which(r$tolerances < 0.20) + 1]))`.", sep="")
l2030 <- length(which(tolerances >= 0.20 & tolerances < 0.30))
if (l2030 > 1)
hh <- "s have tolerances"
else
hh <- " has a tolerance"
if (l2030 > 0)
out <- paste(out,
xU(xNum(l2030)), " variable", hh, " greater than the ",
"cutoff of 0.20, but still somewhat low, less than 0.30: ",
"`r xAnd(names(r$model[which(r$tolerances >= 0.20 & r$tolerances < 0.30) + 1]))`. ",
sep="")
if (length(which(tolerances < 0.30)) == 0)
out <- paste(out,
"No collinearity exists according to the tolerance cutoff of 0.30. ",
sep="")
pl2 <- ifelse (length(which(tolerances == min(tolerances))) > 1, "s", "")
vrb <- ifelse (length(which(tolerances == min(tolerances))) > 1,
"are", "is")
out <- paste(out, " ",
"The predictor variable", pl2, " with the lowest tolerance ", vrb, " ",
"`r xAnd(names(r$model[which(r$tolerances == min(r$tolerances)) + 1]))` at ",
"`r xP(min(r$tolerances),3)`.",
sep="")
}
intr.max_influence <- function() {
cv <- character(10)
cv[1] <- paste("`r xP(r$resid.max[1],3)`", sep="")
for (i in 2:4)
cv <- paste(cv, ", `r xP(r$resid.max[", i, "],3)`", sep="")
cv <- paste(cv, " and `r xP(r$resid.max[5],3)`.", sep="")
if (res_sort == "cooks") txt <- "Cook's distances"
else if (res_sort == "rstudent") txt <- "Studentized residuals"
else if (res_sort == "dffits") txt <- "dffits values"
out <- paste(
"From this analysis, the largest ", txt, ": ", cv,
sep="")
}
intr.threshold_influence <- function() {
lbl <- xRow(resid.max)
if (res_sort == "cooks" && (length(which(resid.max > 1)) > 0))
out <- paste(
"The following case", hh, " more than the ",
"cutoff of 1: ", xAnd(lbl[which(resid.max > 1)]), ". ",
sep="")
if (res_sort == "cooks" && (length(which(resid.max > 1)) == 0))
out <- paste(
"No cases have a Cook's distance larger than 1 in this analysis. ",
sep="")
}
in.new_data <- function() {
out <- paste("<span style='color:maroon;'>", "in.new_data", "</span> \n")
for (i in 1:n.pred) {
out <- paste(out,
pred[i], ": ", new.val[i,1], ", ", new.val[i,2], " \n", sep="")
}
return(out)
}
in.reg_new <- function() {
locTRUE <- regexec("graphics = TRUE", fc)
if (locTRUE == -1) {
loc <- regexec("graphics = FALSE", fc)
if (loc == -1) fc <- sub(")$", ", graphics = FALSE)", fc)
}
cv <- ",\n "
for (i in 1:n.pred)
cv <- paste(cv,
" X", i, "_new=c(", new.val[i,1], ",", new.val[i,2], ")",
ifelse(i == n.pred, "", ","),
sep="")
# cv <- paste(cv, ",\n graphics = FALSE", sep="")
fc <- sub(")", paste(cv, ")", sep=""), fc, fixed=TRUE)
out <- paste("<span style='color:maroon;'>", "in.reg_new", "</span>\n")
out <- paste(out, "```{r", show, "}", "\n", sep="")
out <- paste(out, "r <-", fc, "\n", sep="")
out <- paste(out, "```", "\n", sep="")
}
intr.CI_nosig <- function() {
gt05 <- length(which(pvalues[2:length(pvalues)] > 0.05))
if (gt05 > 0) {
if (gt05 > 1) {
txt1 <- "these"
txt3 <- "have _p_-values"
txt5 <- "each "
pl2 <- "s"
}
else {
txt1 <- "this"
txt3 <- "has a _p_-value"
txt5 <- "the "
pl2 <- ""
}
out <- paste(xU(xNum(gt05)), " predictor variable", pl2, " ", txt3,
" larger than ", "$\\alpha$ = 0.05: ",
"_`r xAnd(names(which(r$pvalues[2:length(r$pvalues)] > 0.05)))`_. ",
sep="")
out <- paste(out, xU(txt5), "null hypothesis of no ",
"relationship could not be rejected, so there is a reasonable possibility ",
"that ", txt5, " predictor variable may not contribute to ",
"explaining the values of ", Y, cnst, ". ", sep="")
} # p > .05
}
intr.CI_sig <- function() {
n.sig <- length(which(pvalues[2:length(pvalues)] <= 0.05))
if (n.sig > 0) {
if (length(which(pvalues[2:length(pvalues)] <= 0.05)) > 1) {
txt1 <- "These predictor variables each have "
txt2 <- "their"
txt3 <- "these corresponding slope coefficients"
txt4 <- "these"
pl3 <- "s"
}
else {
txt1 <- "This predictor variable has "
txt2 <- "its"
txt3 <- "this corresponding slope coefficient"
txt4 <- "this"
pl3 <- ""
}
out <- paste("\n",
txt1, "a _p_-value less than or equal to $\\alpha$ = 0.05: ",
"_`r xAnd(names(which(r$pvalues[2:length(r$pvalues)] <= 0.05)))`_. ",
sep="")
if (n.pred > 1 && n.sig < n.pred)
out <- paste(out,
"The possibility should be further explored in the remainder of this ",
"analysis that ", txt4," ", xNum(n.sig), " variable", pl3, " ",
"may form an equally effective ",
"but more parsimonious model in terms of ", txt2, " ",
"cumulative contribution to explaining the values of ", Y, ", ",
"compared to the current model with ", xNum(n.pred), " predictor variables. ",
sep="")
out <- paste(out, "\n\n",
"To extend the ",
"results beyond this sample to the population from which the sample ",
"was obtained, interpret the meaning of ", txt3, " ",
"in terms of ", txt2, " confidence interval", pl3, ". ",
sep="")
# response variable labels
txtY <- Y
if (!is.null(l)) {
txtY <- l[which(row.names(l) == Y), "label"]
if (length(txtY) == 0) txtY <- Y
}
# response variable units
if (!is.null(l) && ncol(l) == 2) {
uY <- l[which(row.names(l) == Y), "unit"]
if (length(uY) == 0) uY <- ""
uYq <- paste("\"", uY, "\"", sep="") # unit with quotes
if (uY != "dollar") {
if (uY != "")
txtY <- paste("the value of", uY, "of", txtY)
else
txtY <- paste("the value of", txtY)
}
}
else
uYq <- ""
# identify significant predictors
for (i in 1:n.sig) {
j <- which(pvalues[2:length(pvalues)] <= 0.05)[i]
if (i == 1 && n.pred > 1) tx[length(tx)+1] <- ""
if (n.pred > 1)
out <- paste(out, "\n\n", "- _", pred[j], "_: ", sep="")
# significant predictor j variable labels
if (!is.null(l)) {
txtX <- l[which(row.names(l) == pred[j]), "label"]
if (length(txtX) == 0) txtX <- pred[j]
}
else
txtX <- pred[j]
# significant predictor j variable units
if (!is.null(l) && ncol(l) == 2) {
uX <- l[which(row.names(l) == pred[j]), "unit"]
if (length(uX) == 0) uX <- "unit"
}
else
uX <- "unit"
txt <- paste(uX, " of ", txtX)
out <- paste(out,
"With 95% confidence, for each additional ",
txt,
", on average, ", txtY, " changes somewhere between ",
"`r xP(r$cilb[", j+1, "],", d_d, ",", uYq, ")`", " to ",
"`r xP(r$ciub[", j+1, "],", d_d, "," ,uYq, ")`",
sep="")
remn <- sub(pred[j], "", pred) # leaves an empty vector value
remain <- character(length=0)
for (k in 1:n.pred) # collate into a single string
if (nzchar(remn[k])) remain[length(remain)+1] <- remn[k]
remain <- xAnd(remain)
if (n.pred > 1)
out <- paste(out, ", with the values of ",
remain, " held constant", sep="")
out <- paste(out, ".", sep="")
} # i in n.sig
} # n.sig > 0, i.e., at least one predictor significant
else
uYq <- ""
return(out)
}
# ----------------------------------------------------------
# set values for symbols to be interpreted in input markdown
# ----------------------------------------------------------
# input markdown is sent to .RmdParse(), which processes the input
# including providing the values for all defined symbols, and then
# returns the processed input to this function, which then outputs
# to the R markdown document
uYq <- "" # initialize in case interpret=FALSE, so not used
# internal
d_d <- digits_d # needed here for internal to function calls
pred <- character(length=0)
for (i in 1:n.pred) pred[i] <- nm[i+1]
# for users
Y <- nm[1]
X <- xAnd(pred)
W_n.vars <- xNum(n.vars)
W_n.pred <- xNum(n.pred)
if (n.pred > 1) {
et <- "each "
et.c <- "Each "
pl <- "s"
cnst <- ", with the values of all remaining predictor variables held constant"
mult <- paste("through $b_", n.pred, "$", sep="")
}
else {
et <- "the "
et.c <- "The"
pl <- ""
cnst <- ""
mult <- ""
}
# --------------------------------------
# get variable labels and units if exist
# --------------------------------------
l.name <- "l"
if (l.name %in% ls(name=.GlobalEnv)) {
l <- get(l.name, pos=.GlobalEnv)
n.lbls <- length(which(row.names(l) %in% nm))
var.lbl <- character(length=0)
# var.unit <- character(length=0)
for (i in 1:n.lbls) {
i.row <- which(row.names(l) == nm[i])
if (length(i.row) > 0) if (is.numeric(i.row)) if (all(!is.na(l[i.row, ])))
var.lbl[i] <- l[i.row,1]
myunits <- NULL
#myunits <- attr(get(dname, pos=.GlobalEnv), which="variable.units")
#if (!is.null(myunits))
}
}
else {
l <- NULL
var.lbl <- NULL
myunits <- NULL
}
# ------------------------------------------
# flags to use default input or custom input
# ------------------------------------------
alt1Intro <- ifelse ("1Intro" %in% Rmd_custom, TRUE, FALSE)
alt2Data <- ifelse ("2Data" %in% Rmd_custom, TRUE, FALSE)
alt3Model <- ifelse ("3Model" %in% Rmd_custom, TRUE, FALSE)
alt4Fit <- ifelse ("4Fit" %in% Rmd_custom, TRUE, FALSE)
alt5Rel <- ifelse ("5Rel" %in% Rmd_custom, TRUE, FALSE)
alt6Infl <- ifelse ("6Infl" %in% Rmd_custom, TRUE, FALSE)
alt7Pred <- ifelse ("7Pred" %in% Rmd_custom, TRUE, FALSE)
alt8Valid <- ifelse ("8Valid" %in% Rmd_custom, TRUE, FALSE)
# ----------------------
# create R markdown file
# ----------------------
# front matter
# ------------
tx <- character(length = 0)
tx[length(tx)+1] <- "---"
tx[length(tx)+1] <- "output:"
tx[length(tx)+1] <- " html_document:"
tx[length(tx)+1] <- " toc: true"
tx[length(tx)+1] <- " toc_depth: 4"
tx[length(tx)+1] <- " fig_height: 4.5"
tx[length(tx)+1] <- " fig_width: 5.5"
# tx[length(tx)+1] <- ""
if (n.pred > 1)
tx[length(tx)+1] <- paste("title: \"Multiple Regression of ", nm[1],
"\"", sep="")
else
tx[length(tx)+1] <- paste("title: \"Regression of ", Y, " on ", X, "\"",
sep="")
tx[length(tx)+1] <- "---"
tx[length(tx)+1] <- ""
tx[length(tx)+1] <- "***"
v <- packageVersion("lessR")
tx[length(tx)+1] <- paste(
"_", format(Sys.time(), "%a %b %d, %Y at %H:%M"), " with ",
"lessR version ", v, "_",
sep="")
tx[length(tx)+1] <- paste("\n",
"_Output Options: explain=", explain, ", interpret=", interpret,
", results=", results, ", code=", code, "_",
sep="")
tx[length(tx)+1] <- ""
tx[length(tx)+1] <- "***"
tx[length(tx)+1] <- "```{r echo=FALSE}"
tx[length(tx)+1] <- "suppressPackageStartupMessages(library(lessR)) # lessR"
tx[length(tx)+1] <- "```"
txtY <- ""
if (!is.null(var.lbl)) {
if (!is.na(var.lbl[1])) {
Ylbl <- var.lbl[1]
txtY <- paste(", ", Ylbl, sep="")
}
}
txtX <- ""
if (n.pred == 1) {
if (!is.null(var.lbl)) {
if (!is.na(var.lbl[2])) {
Xlbl <- var.lbl[2]
txtX <- paste(", ", Xlbl, sep="")
}
}
} # end n.pred==1
show <- ifelse (code, "", ", echo=FALSE")
tx[length(tx)+1] <- paste("`r results <- ", results, "`", sep="")
tx[length(tx)+1] <- paste("`r explain <- ", explain, "`", sep="")
tx[length(tx)+1] <- paste("`r interpret <- ", interpret, "`", sep="")
# 1 - Intro
# ---------
if (Rmd_labels) tx[length(tx)+1] <- lbls("1Intro.txt")
if (!alt1Intro) {
sf <- system.file("Rmd/reg/1Intro.txt", package="lessR")
tx[length(tx)+1] <- .RmdParse(sf, NULL, n.pred, explain, results, interpret)
}
else # read and process alternate text
tx[length(tx)+1] <- .RmdParse("1Intro.txt", Rmd_dir, n.pred,
explain, results, interpret)
# 2 - Data
# --------
if (is.null(Rmd_data))
rdcall <- getOption("read.call") # the last Read statement
else
rdcall <- paste("Read(\"", Rmd_data, "\")", sep="")
if (is.null(rdcall)) {
cat("\n"); stop(call.=FALSE, "\n","------\n",
"To generate an R markdown file, first read the data for this\n",
"regression analysis with the lessR function Read(), or\n",
"specify a path name for Rmd_data.\n\n",
"ex: d <- Read(\"\")\n\n")
}
if (code) {
ref <- .get.arg("ref", rdcall) # only works for Read, not rd or rd_brief
if (ref %in% c("Employee", "Reading", "Cars93", "Jackets", "Learn",
"Mach4", "BodyMeas", "StockPrice", "WeightLoss",
"Anova_1way", "Anova_2way")) {
tx[length(tx)+1] <- paste(
"Here read from a data file included with the `lessR` package.",
sep="")
}
}
# get dname resolved to its value and pass the value into markdown
tx[length(tx)+1] <- paste("`r data.in <- ", dname, "`", sep="")
if (Rmd_labels) tx[length(tx)+1] <- lbls("2Data.txt")
if (!alt2Data) {
sf <- system.file("Rmd/reg/2Data.txt", package="lessR")
tx[length(tx)+1] <- .RmdParse(sf, NULL, n.pred, explain, results, interpret)
}
else # read and process alternate text
tx[length(tx)+1] <- .RmdParse("2Data.txt", Rmd_dir, n.pred,
explain, results, interpret)
# 3 - Model
# ---------
if (!alt3Model) {
if (Rmd_labels) tx[length(tx)+1] <- lbls("3Model.txt")
sf <- system.file("Rmd/reg/3Model.txt", package="lessR")
tx[length(tx)+1] <- .RmdParse(sf, NULL, n.pred, explain, results, interpret)
}
else
tx[length(tx)+1] <- .RmdParse("3Model.txt", Rmd_dir, n.pred,
explain, results, interpret)
# 4 - Fit
# -------
if (Rmd_labels) tx[length(tx)+1] <- lbls("4Fit.txt")
if (!alt4Fit) {
sf <- system.file("Rmd/reg/4Fit.txt", package="lessR")
tx[length(tx)+1] <- .RmdParse(sf, NULL, n.pred, explain, results, interpret)
}
else
tx[length(tx)+1] <- .RmdParse("4Fit.txt", Rmd_dir, n.pred, explain,
results, interpret)
# 5 - Relations
# -------------
if (nchar(uYq) == 0) uYq <- NULL
tx[length(tx)+1] <- paste("`r d_d <-", d_d, "`")
if (n.pred==1) {
if (Rmd_labels) tx[length(tx)+1] <- lbls("5Relations1.txt")
if (!alt5Rel) {
sf <- system.file("Rmd/reg/5Relations1.txt", package="lessR")
tx[length(tx)+1] <- .RmdParse(sf, NULL, n.pred, explain, results, interpret)
}
else
tx[length(tx)+1] <- .RmdParse("5Relations1.txt", Rmd_dir, n.pred,
explain, results, interpret)
}
else { # multiple regression`
if (Rmd_labels) tx[length(tx)+1] <- lbls("5RelationsM.txt")
if (!alt5Rel) {
sf <- system.file("Rmd/reg/5RelationsM.txt", package="lessR")
tx[length(tx)+1] <- .RmdParse(sf, NULL, n.pred, explain, results, interpret)
}
else
tx[length(tx)+1] <- .RmdParse("5RelationsM.txt", Rmd_dir, n.pred,
explain, results, interpret)
}
if (n_res_rows > 0) {
# 6 - Influence
# -------------
if (length(which(resid.max > 1)) > 1)
hh <- "s have values"
else
hh <- " has a value"
if (Rmd_labels) tx[length(tx)+1] <- lbls("6Influence.txt")
if (!alt6Infl) {
sf <- system.file("Rmd/reg/6Influence.txt", package="lessR")
tx[length(tx)+1] <- .RmdParse(sf, NULL, n.pred, explain, results, interpret,
res_sort=res_sort)
}
else
tx[length(tx)+1] <- .RmdParse("6Influence.txt", Rmd_dir, n.pred,
explain, results, interpret,
res_sort=res_sort)
} # n_res_rows > 0
#7 - Prediction
# -------------
if (!is.null(uYq)) if (nchar(uYq) == 0) uYq <- NULL
if (n_pred_rows > 0 && n.pred <= 6 && is.null(X1_new)) {
tx[length(tx)+1] <- paste("`r uYq <- ", paste("\"", uYq, "\"`", sep=""), sep="")
if (Rmd_labels) tx[length(tx)+1] <- lbls("7Prediction.txt")
if (!alt7Pred) {
sf <- system.file("Rmd/reg/7Prediction.txt", package="lessR")
tx[length(tx)+1] <- .RmdParse(sf, NULL, n.pred, explain, results, interpret)
}
else
tx[length(tx)+1] <- .RmdParse("7Prediction.txt", Rmd_dir, n.pred,
explain, results, interpret)
}
#8 - Validity
# -----------
if (Rmd_labels) tx[length(tx)+1] <- lbls("8Validity.txt")
if (!alt8Valid) {
sf <- system.file("Rmd/reg/8Validity.txt", package="lessR")
tx[length(tx)+1] <- .RmdParse(sf, NULL, n.pred, explain, results, interpret)
}
else
tx[length(tx)+1] <- .RmdParse("8Validity.txt", Rmd_dir, n.pred,
explain, results, interpret)
return(tx)
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.