annotate templateLibrary.py @ 3:31ec202700b0 draft

Uploaded
author deepakjadmin
date Thu, 08 Jun 2017 17:41:41 -0400
parents 251849bed194
children 3221ecaeb967
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
1 def __template4Rnw():
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
2
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
3 template4Rnw = r'''%% Regression Modeling Script
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
4 %% Max Kuhn (max.kuhn@pfizer.com, mxkuhn@gmail.com)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
5 %% Version: 1.00
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
6 %% Created on: 2010/10/02
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
7 %%
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
8 %% Lynn Group
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
9 %% Version: 2.00
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
10 %% Created on: 2014/11/15
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
11
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
12 %% This is an Sweave template for building and describing
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
13 %% classification models. It mixes R and LaTeX code. The document can
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
14 %% be processing using R's Sweave function to produce a tex file.
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
15 %%
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
16 %% The inputs are:
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
17 %% - the initial data set in a data frame called 'rawData'
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
18 %% - a numeric column in the data set called 'outcome'. this should be the
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
19 %% outcome variable
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
20 %% - all other columns in rawData should be predictor variables
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
21 %% - the type of model should be in a variable called 'modName'.
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
22 %%
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
23 %% The script attempts to make some intelligent choices based on the
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
24 %% model being used. For example, if modName is "pls", the script will
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
25 %% automatically center and scale the predictor data. There are
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
26 %% situations where these choices can (and should be) changed.
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
27 %%
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
28 %% There are other options that may make sense to change. For example,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
29 %% the user may want to adjust the type of resampling. To find these
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
30 %% parts of the script, search on the string 'OPTION'. These parts of
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
31 %% the code will document the options.
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
32
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
33 \documentclass[12pt]{report}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
34 \usepackage{amsmath}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
35 \usepackage[pdftex]{graphicx}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
36 \usepackage{color}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
37 \usepackage{ctable}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
38 \usepackage{xspace}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
39 \usepackage{fancyvrb}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
40 \usepackage{fancyhdr}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
41 \usepackage{lastpage}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
42 \usepackage{longtable}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
43 \usepackage{algorithm2e}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
44 \usepackage[
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
45 colorlinks=true,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
46 linkcolor=blue,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
47 citecolor=blue,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
48 urlcolor=blue]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
49 {hyperref}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
50 \usepackage{lscape}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
51
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
52 \usepackage{Sweave}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
53 \SweaveOpts{keep.source = TRUE}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
54
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
55 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
56
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
57 % define new colors for use
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
58 \definecolor{darkgreen}{rgb}{0,0.6,0}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
59 \definecolor{darkred}{rgb}{0.6,0.0,0}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
60 \definecolor{lightbrown}{rgb}{1,0.9,0.8}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
61 \definecolor{brown}{rgb}{0.6,0.3,0.3}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
62 \definecolor{darkblue}{rgb}{0,0,0.8}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
63 \definecolor{darkmagenta}{rgb}{0.5,0,0.5}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
64
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
65 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
66
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
67 \newcommand{\bld}[1]{\mbox{\boldmath $#1$}}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
68 \newcommand{\shell}[1]{\mbox{$#1$}}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
69 \renewcommand{\vec}[1]{\mbox{\bf {#1}}}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
70
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
71 \newcommand{\ReallySmallSpacing}{\renewcommand{\baselinestretch}{.6}\Large\normalsize}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
72 \newcommand{\SmallSpacing}{\renewcommand{\baselinestretch}{1.1}\Large\normalsize}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
73
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
74 \newcommand{\halfs}{\frac{1}{2}}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
75
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
76 \setlength{\oddsidemargin}{-.25 truein}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
77 \setlength{\evensidemargin}{0truein}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
78 \setlength{\topmargin}{-0.2truein}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
79 \setlength{\textwidth}{7 truein}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
80 \setlength{\textheight}{8.5 truein}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
81 \setlength{\parindent}{0.20truein}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
82 \setlength{\parskip}{0.10truein}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
83
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
84 \setcounter{LTchunksize}{50}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
85
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
86 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
87 \pagestyle{fancy}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
88 \lhead{}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
89 %% OPTION Report header name
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
90 \chead{Regression Model Script}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
91 \rhead{}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
92 \lfoot{}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
93 \cfoot{}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
94 \rfoot{\thepage\ of \pageref{LastPage}}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
95 \renewcommand{\headrulewidth}{1pt}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
96 \renewcommand{\footrulewidth}{1pt}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
97 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
98
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
99 %% OPTION Report title and modeler name
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
100 \title{Regression Model Script using $METHOD }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
101 \author{"M. Kuhn and Lynn Group, SCIS, JNU, New Delhi"}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
102
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
103 \begin{document}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
104
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
105 \maketitle
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
106
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
107 \thispagestyle{empty}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
108
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
109 <<startup, eval= TRUE, results = hide, echo = FALSE>>=
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
110 library(Hmisc)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
111 library(caret)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
112 versionTest <- compareVersion(packageDescription("caret")$Version,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
113 "4.65")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
114 if(versionTest < 0) stop("caret version 4.65 or later is required")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
115
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
116 library(RColorBrewer)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
117
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
118
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
119 listString <- function (x, period = FALSE, verbose = FALSE)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
120 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
121 if (verbose) cat("\n entering listString\n")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
122 flush.console()
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
123 if (!is.character(x))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
124 x <- as.character(x)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
125 numElements <- length(x)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
126 out <- if (length(x) > 0) {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
127 switch(min(numElements, 3), x, paste(x, collapse = " and "),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
128 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
129 x <- paste(x, c(rep(",", numElements - 2), " and", ""), sep = "")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
130 paste(x, collapse = " ")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
131 })
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
132 }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
133 else ""
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
134 if (period) out <- paste(out, ".", sep = "")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
135 if (verbose) cat(" leaving listString\n\n")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
136 flush.console()
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
137 out
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
138 }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
139
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
140 resampleStats <- function(x, digits = 3)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
141 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
142 bestPerf <- x$bestTune
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
143 colnames(bestPerf) <- gsub("^\\.", "", colnames(bestPerf))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
144 out <- merge(x$results, bestPerf)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
145 out <- out[, colnames(out) %in% x$perfNames]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
146 names(out) <- gsub("ROC", "area under the ROC curve", names(out), fixed = TRUE)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
147 names(out) <- gsub("Sens", "sensitivity", names(out), fixed = TRUE)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
148 names(out) <- gsub("Spec", "specificity", names(out), fixed = TRUE)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
149 names(out) <- gsub("Accuracy", "overall accuracy", names(out), fixed = TRUE)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
150 names(out) <- gsub("Kappa", "Kappa statistics", names(out), fixed = TRUE)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
151 names(out) <- gsub("RMSE", "root mean squared error", names(out), fixed = TRUE)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
152 names(out) <- gsub("Rsquared", "$R^2$", names(out), fixed = TRUE)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
153
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
154 out <- format(out, digits = digits)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
155 listString(paste(names(out), "was", out))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
156 }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
157
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
158 latticeBubble <- function(x, y, z, offset = .5, splits = 10,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
159 pal = colorRampPalette(brewer.pal(9,"YlOrRd")[-(1:2)]),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
160 ...)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
161 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
162 cexValues <- rank(z)/length(z) + offset
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
163 splits <- unique(quantile(z, probs = seq(0, 1, length = splits)))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
164 splitup <- cut(z, breaks = splits, include.lowest = TRUE)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
165 cols <- pal(length(levels(splitup)))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
166 colValues <- cols[as.numeric(splitup)]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
167 if(is.data.frame(x))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
168 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
169 out <- splom(~x, col = colValues, cex = cexValues, ...)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
170
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
171 } else out <- xyplot(y~x, col = colValues, cex = cexValues, ...)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
172 out
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
173
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
174 }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
175
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
176
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
177 ##OPTION: model name: see ?train for more values/models
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
178 modName <- "$METHOD"
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
179 load("$RDATA")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
180 rawData <- dataX
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
181 rawData$$outcome <- dataY
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
182
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
183
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
184
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
185 @
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
186
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
187
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
188 \section*{Data Sets}\label{S:data}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
189
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
190 %% OPTION: provide some background on the problem, the experimental
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
191 %% data, how the compounds were selected etc
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
192
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
193
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
194 <<getDataInfo, eval = $GETDATAINFOEVAL, echo = $GETDATAINFOECHO, results = $GETDATAINFORESULT>>=
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
195 if(!any(names(rawData) == "outcome")) stop("a variable called outcome should be in the data set")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
196 if(!is.numeric(rawData$outcome)) stop("the outcome should be a numeric vector")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
197
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
198 numSamples <- nrow(rawData)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
199 numPredictors <- ncol(rawData) - 1
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
200 predictorNames <- names(rawData)[names(rawData) != "outcome"]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
201
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
202 isNum <- apply(rawData[,predictorNames, drop = FALSE], 2, is.numeric)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
203 if(any(!isNum)) stop("all predictors in rawData should be numeric")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
204
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
205 @
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
206
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
207
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
208 <<missingFilter, eval = $MISSINGFILTEREVAL, echo = $MISSINGFILTERECHO, results = $MISSINGFILTERRESULT>>=
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
209
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
210 colRate <- apply(rawData[, predictorNames, drop = FALSE],
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
211 2, function(x) mean(is.na(x)))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
212
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
213 ##OPTION thresholds can be changed
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
214 colExclude <- colRate > $MISSINGFILTERTHRESHC
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
215
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
216 missingText <- ""
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
217
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
218 if(any(colExclude))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
219 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
220 missingText <- paste(missingText,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
221 ifelse(sum(colExclude) > 1,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
222 " There were ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
223 " There was "),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
224 sum(colExclude),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
225 ifelse(sum(colExclude) > 1,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
226 " predictors ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
227 " predictor "),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
228 "with an excessive number of ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
229 "missing data. ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
230 ifelse(sum(colExclude) > 1,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
231 " These were excluded. ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
232 " This was excluded. "))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
233 predictorNames <- predictorNames[!colExclude]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
234 rawData <- rawData[, names(rawData) %in% c("outcome", predictorNames), drop = FALSE]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
235 }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
236
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
237
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
238 rowRate <- apply(rawData[, predictorNames, drop = FALSE],
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
239 1, function(x) mean(is.na(x)))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
240
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
241 rowExclude <- rowRate > $MISSINGFILTERTHRESHR
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
242
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
243
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
244 if(any(rowExclude))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
245 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
246 missingText <- paste(missingText,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
247 ifelse(sum(rowExclude) > 1,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
248 " There were ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
249 " There was "),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
250 sum(colExclude),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
251 ifelse(sum(rowExclude) > 1,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
252 " samples ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
253 " sample "),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
254 "with an excessive number of ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
255 "missing data. ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
256 ifelse(sum(rowExclude) > 1,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
257 " These were excluded. ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
258 " This was excluded. "),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
259 "After filtering, ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
260 sum(!rowExclude),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
261 " samples remained.")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
262 rawData <- rawData[!rowExclude, ]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
263 hasMissing <- apply(rawData[, predictorNames, drop = FALSE],
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
264 1, function(x) mean(is.na(x)))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
265 } else {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
266 hasMissing <- apply(rawData[, predictorNames, drop = FALSE],
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
267 1, function(x) any(is.na(x)))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
268 missingText <- paste(missingText,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
269 ifelse(missingText == "",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
270 "There ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
271 "Subsequently, there "),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
272 ifelse(sum(hasMissing) == 1,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
273 "was ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
274 "were "),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
275 ifelse(sum(hasMissing) > 0,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
276 sum(hasMissing),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
277 "no"),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
278 ifelse(sum(hasMissing) == 1,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
279 "sample ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
280 "samples "),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
281 "with missing values.")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
282 rawData <- rawData[complete.cases(rawData),]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
283 }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
284
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
285 dataDist <- summary(rawData$outcome)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
286 dataSD <- sd(rawData$outcome, na.rm = TRUE)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
287 dataText <- paste("The average outcome value was ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
288 dataDist["Mean"],
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
289 " and a standard deviation of ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
290 dataSD, ". The minimum and maximum values were ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
291 dataDist["Min."], " and ", dataDist["Max."],
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
292 ", respectively. Figure \\\\ref{F:dens} shows a ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
293 " density plot (i.e. a smooth histogram) of the response.",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
294 sep = "")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
295
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
296 rawData1 <- rawData[,1:length(rawData)-1]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
297 rawData2 <- rawData[,length(rawData)]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
298
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
299 set.seed(222)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
300 nzv1 <- nearZeroVar(rawData1)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
301 if(length(nzv1) > 0)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
302 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
303 nzvVars1 <- names(rawData1)[nzv1]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
304 rawData <- rawData1[,-nzv1]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
305 rawData$outcome <- rawData2
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
306 nzvText1 <- paste("There were ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
307 length(nzv1),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
308 " predictors that were removed from original data due to",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
309 " severely unbalanced distributions that",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
310 " could negatively affect the model fit",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
311 ifelse(length(nzv1) > 10,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
312 ".",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
313 paste(": ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
314 listString(nzvVars1),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
315 ".",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
316 sep = "")),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
317 sep = "")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
318
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
319 } else {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
320 rawData <- rawData1
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
321 rawData$outcome <- rawData2
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
322 nzvText1 <- ""
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
323
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
324 }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
325
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
326 remove("rawData1")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
327 remove("rawData2")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
328
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
329 @
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
330
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
331 The initial data set consisted of \Sexpr{numSamples} samples and
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
332 \Sexpr{numPredictors} predictor variables. \Sexpr{dataText} \Sexpr{missingText}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
333 \Sexpr{nzvText1}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
334
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
335 \setkeys{Gin}{width = 0.8\textwidth}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
336 \begin{figure}[b]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
337 \begin{center}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
338
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
339 <<densityplot, echo = FALSE, results = hide, fig = TRUE, width = 8, height = 4.5>>=
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
340 trellis.par.set(caretTheme(), warn = TRUE)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
341 print(densityplot(~rawData$outcome, pch = "|", adjust = 1.25, xlab = ""))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
342 @
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
343 \caption[Data Density]{A density plot of the response. The marks
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
344 along the $x$--axis show the locations of the data points.}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
345 \label{F:dens}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
346 \end{center}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
347 \end{figure}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
348
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
349
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
350 <<pca, eval= $PCAEVAL, echo = $PCAECHO, results = $PCARESULT>>=
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
351 predictorNames <- names(rawData)[names(rawData) != "outcome"]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
352 numPredictors <- length(predictorNames)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
353
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
354 predictors <- rawData[, predictorNames, drop = FALSE]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
355 ## PCA will fail with predictors having less than 2 unique values
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
356 isZeroVar <- apply(predictors, 2,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
357 function(x) length(unique(x)) < 2)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
358 if(any(isZeroVar)) predictors <- predictors[, !isZeroVar, drop = FALSE]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
359 ## For whatever, only the formula interface to prcomp
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
360 ## handles missing values
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
361 pcaForm <- as.formula(
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
362 paste("~",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
363 paste(names(predictors), collapse = "+")))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
364 pca <- prcomp(pcaForm,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
365 data = predictors,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
366 center = TRUE,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
367 scale. = TRUE,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
368 na.action = na.omit)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
369 ## OPTION: the number of components plotted/discussed can be set
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
370 numPCAcomp <- $PCACOMP
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
371 pctVar <- pca$sdev^2/sum(pca$sdev^2)*100
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
372 pcaText <- paste(round(pctVar[1:numPCAcomp], 1),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
373 "\\\\%",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
374 sep = "")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
375 pcaText <- listString(pcaText)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
376 @
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
377
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
378 To get an initial assessment of the separability of the classes,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
379 principal component analysis (PCA) was used to distill the
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
380 \Sexpr{numPredictors} predictors down into \Sexpr{numPCAcomp}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
381 surrogate variables (i.e. the principal components) in a manner that
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
382 attempts to maximize the amount of information preserved from the
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
383 original predictor set. Figure \ref{F:inititalPCA} contains plots of
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
384 the first \Sexpr{numPCAcomp} components, which accounted for
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
385 \Sexpr{pcaText} percent of the variability in the original predictors
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
386 (respectively).
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
387
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
388 %% OPTION: remark on how well (or poorly) the data separated
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
389
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
390 \setkeys{Gin}{width = 0.8\textwidth}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
391 \begin{figure}[p]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
392 \begin{center}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
393
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
394 <<pcaPlot, eval = $PCAPLOTEVAL, echo = $PCAPLOTECHO, results = $PCAPLOTRESULT, fig = $PCAPLOTFIG, width = 8, height = 8>>=
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
395 trellis.par.set(caretTheme(), warn = TRUE)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
396 if(numPCAcomp == 2)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
397 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
398 axisRange <- extendrange(pca$x[, 1:2])
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
399 print(
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
400 latticeBubble(x = as.data.frame(pca$x)$PC1,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
401 y = as.data.frame(pca$x)$PC2,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
402 z = rawData$outcome,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
403 type = c("p", "g"),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
404 xlab = "PC1", ylab = "PC2",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
405 xlim = axisRange,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
406 ylim = axisRange))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
407
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
408 } else {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
409 axisRange <- extendrange(pca$x[, 1:numPCAcomp])
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
410 print(
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
411 latticeBubble(x = as.data.frame(pca$x)[,1:numPCAcomp],
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
412
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
413 z = rawData$outcome,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
414 type = c("p", "g"),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
415 xlab = "PC1", ylab = "PC2",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
416 xlim = axisRange,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
417 ylim = axisRange))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
418
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
419
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
420 }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
421 @
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
422 \caption[PCA Plot]{A plot of the first \Sexpr{numPCAcomp}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
423 principal components for the original data set. Smaller, lighter
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
424 points indicate smaller values of the response while darker,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
425 larger points correspond to larger values of the outcome}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
426 \label{F:inititalPCA}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
427 \end{center}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
428 \end{figure}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
429
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
430
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
431 <<initialDataSplit, eval = $INITIALDATASPLITEVAL, echo = $INITIALDATASPLITECHO, results = $INITIALDATASPLITRESULT>>=
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
432
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
433 ## OPTION: in small samples sizes, you may not want to set aside a
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
434 ## training set and focus on the resampling results.
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
435 numSamples <- nrow(rawData)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
436
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
437 predictorNames <- names(rawData)[names(rawData) != "outcome"]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
438 numPredictors <- length(predictorNames)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
439
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
440 # pctTrain <- .15
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
441 pctTrain <- $PERCENT
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
442
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
443 if(pctTrain < 1)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
444 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
445 ## OPTION: seed number can be changed
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
446 set.seed(1)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
447 inTrain <- createDataPartition(rawData$outcome,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
448 p = pctTrain,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
449 list = FALSE)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
450 trainX <- rawData[ inTrain, predictorNames]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
451 testX <- rawData[-inTrain, predictorNames]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
452 trainY <- rawData[ inTrain, "outcome"]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
453 testY <- rawData[-inTrain, "outcome"]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
454 splitText <- paste("The original data were split into ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
455 "a training set ($n$=",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
456 nrow(trainX),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
457 ") and a test set ($n$=",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
458 nrow(testX),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
459 ") in a manner that preserved the ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
460 "distribution of the response.",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
461 sep = "")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
462 isZeroVar <- apply(trainX, 2,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
463 function(x) length(unique(x)) < 2)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
464 if(any(isZeroVar))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
465 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
466 trainX <- trainX[, !isZeroVar, drop = FALSE]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
467 testX <- testX[, !isZeroVar, drop = FALSE]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
468 }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
469
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
470 } else {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
471 trainX <- rawData[, predictorNames]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
472 testX <- NULL
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
473 trainY <- rawData[, "outcome"]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
474 testY <- NULL
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
475 splitText <- "The entire data set was used as the training set."
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
476 }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
477
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
478 remove("rawData")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
479
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
480 @
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
481
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
482 \Sexpr{splitText}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
483 The data set for model building consisted of \Sexpr{numSamples} samples and
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
484 \Sexpr{numPredictors} predictor variables.
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
485
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
486
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
487
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
488 <<nzv, eval= $NZVEVAL, results = $NZVRESULT, echo = $NZVECHO>>=
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
489 ## OPTION: other pre-processing steps can be used
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
490 ppSteps <- caret:::suggestions(modName)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
491
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
492 set.seed(2)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
493 if(ppSteps["nzv"])
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
494 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
495 nzv <- nearZeroVar(trainX)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
496 if(length(nzv) > 0)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
497 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
498 nzvVars <- names(trainX)[nzv]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
499 trainX <- trainX[, -nzv]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
500 nzvText <- paste("There were ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
501 length(nzv),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
502 " predictors that were removed due to",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
503 " severely unbalanced distributions that",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
504 " could negatively affect the model fit",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
505 ifelse(length(nzv) > 10,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
506 ".",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
507 paste(": ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
508 listString(nzvVars),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
509 ".",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
510 sep = "")),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
511 sep = "")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
512 testX <- testX[, -nzv]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
513 } else nzvText <- ""
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
514 } else nzvText <- ""
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
515 @
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
516
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
517 \Sexpr{nzvText}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
518
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
519 <<corrFilter, eval = $CORRFILTEREVAL, results = $CORRFILTERRESULT, echo = $CORRFILTERECHO>>=
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
520
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
521 if(ppSteps["corr"])
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
522 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
523 ## OPTION:
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
524 ##corrThresh <- .75
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
525 corrThresh <- $THRESHHOLDCOR
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
526 highCorr <- findCorrelation(cor(trainX, use = "pairwise.complete.obs"),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
527 corrThresh)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
528 if(length(highCorr) > 0)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
529 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
530 corrVars <- names(trainX)[highCorr]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
531 trainX <- trainX[, -highCorr]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
532 corrText <- paste("There were ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
533 length(highCorr),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
534 " predictors that were removed due to",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
535 " large between--predictor correlations that",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
536 " could negatively affect the model fit",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
537 ifelse(length(highCorr) > 10,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
538 ".",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
539 paste(": ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
540 listString(highCorr),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
541 ".",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
542 sep = "")),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
543 " Removing these predictors forced",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
544 " all pair--wise correlations to be",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
545 " less than ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
546 corrThresh,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
547 ".",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
548 sep = "")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
549 testX <- testX[, -highCorr]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
550 } else corrText <- ""
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
551 }else corrText <- ""
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
552 @
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
553
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
554 \Sexpr{corrText}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
555
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
556 <<preProc, eval = $PREPROCEVAL, echo = $PREPROCECHO, results = $PREPROCRESULT>>=
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
557
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
558 ppMethods <- NULL
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
559 if(ppSteps["center"]) ppMethods <- c(ppMethods, "center")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
560 if(ppSteps["scale"]) ppMethods <- c(ppMethods, "scale")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
561 if(any(hasMissing) > 0) ppMethods <- c(ppMethods, "knnImpute")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
562 ##OPTION other methods, such as spatial sign, can be added to this list
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
563
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
564 if(length(ppMethods) > 0)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
565 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
566 ppInfo <- preProcess(trainX, method = ppMethods)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
567 trainX <- predict(ppInfo, trainX)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
568 if(pctTrain < 1) testX <- predict(ppInfo, testX)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
569 ppText <- paste("The following pre--processing methods were",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
570 " applied to the training",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
571 ifelse(pctTrain < 1, " and test", ""),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
572 " data: ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
573 listString(ppMethods),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
574 ".",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
575 sep = "")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
576 ppText <- gsub("center", "mean centering", ppText)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
577 ppText <- gsub("scale", "scaling to unit variance", ppText)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
578 ppText <- gsub("knnImpute",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
579 paste(ppInfo$k, "--nearest neighbor imputation", sep = ""),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
580 ppText)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
581 ppText <- gsub("spatialSign", "the spatial sign transformation", ppText)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
582 ppText <- gsub("pca", "principal component feature extraction", ppText)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
583 ppText <- gsub("ica", "independent component feature extraction", ppText)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
584 } else {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
585 ppInfo <- NULL
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
586 ppText <- ""
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
587 }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
588
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
589 predictorNames <- names(trainX)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
590 if(nzvText != "" | corrText != "" | ppText != "")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
591 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
592 varText <- paste("After pre--processing, ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
593 ncol(trainX),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
594 "predictors remained for modeling.")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
595 } else varText <- ""
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
596
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
597 @
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
598
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
599 \Sexpr{ppText} \Sexpr{varText}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
600
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
601 \clearpage
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
602 \section*{Model Building}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
603
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
604 <<setupWorkers, eval = TRUE, echo = $SETUPWORKERSECHO, results = $SETUPWORKERSRESULT>>=
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
605
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
606 numWorkers <- $NUMWORKERS
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
607 ##OPTION: turn up numWorkers to use MPI
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
608 if(numWorkers > 1)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
609 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
610 mpiCalcs <- function(X, FUN, ...)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
611 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
612 theDots <- list(...)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
613 parLapply(theDots$cl, X, FUN)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
614 }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
615
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
616 library(snow)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
617 cl <- makeCluster(numWorkers, "MPI")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
618 }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
619 @
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
620
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
621 <<setupResampling, echo = $SETUPRESAMPLINGECHO, results = $SETUPRESAMPLINGRESULT>>=
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
622 ##<<setupResampling, echo = FALSE, results = hide>>=
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
623 ##OPTION: the resampling options can be changed. See
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
624 ## ?trainControl for details
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
625 resampName <- "repeatedcv"
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
626 resampNumber <- $RESAMPLENUMBER
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
627 numRepeat <- 3
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
628 resampP <- $RESAMPLENUMBERPERCENT
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
629
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
630 modelInfo <- modelLookup(modName)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
631
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
632 set.seed(3)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
633 ctlObj <- trainControl(method = resampName,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
634 number = resampNumber,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
635 repeats = numRepeat,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
636 p = resampP)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
637
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
638
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
639 ##OPTION select other performance metrics as needed
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
640 optMetric <- "RMSE"
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
641
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
642 if(numWorkers > 1)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
643 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
644 ctlObj$workers <- numWorkers
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
645 ctlObj$computeFunction <- mpiCalcs
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
646 ctlObj$computeArgs <- list(cl = cl)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
647 }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
648 @
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
649
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
650 <<setupGrid, results = $SETUPGRIDRESULT, echo = $SETUPGRIDECHO>>=
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
651
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
652 ##OPTION expand or contract these grids as needed (or
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
653 ## add more models
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
654
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
655 gridSize <- $SETUPGRIDSIZE
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
656
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
657 if(modName %in% c("svmPoly", "svmRadial", "svmLinear", "ctree2", "ctree")) gridSize <- 5
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
658 if(modName %in% c("earth")) gridSize <- 7
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
659 if(modName %in% c("knn", "glmboost", "rf", "nodeHarvest")) gridSize <- 10
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
660
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
661 if(modName %in% c("rpart")) gridSize <- 15
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
662 if(modName %in% c("pls", "lars2", "lars")) gridSize <- min(20, ncol(trainX))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
663
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
664 if(modName == "gbm")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
665 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
666 tGrid <- expand.grid(.interaction.depth = -1 + (1:5)*2 ,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
667 .n.trees = (1:10)*20,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
668 .shrinkage = .1)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
669 }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
670
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
671 if(modName == "nnet")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
672 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
673 tGrid <- expand.grid(.size = -1 + (1:5)*2 ,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
674 .decay = c(0, .001, .01, .1))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
675 }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
676
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
677 @
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
678
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
679
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
680 <<fitModel, results = $FITMODELRESULT, echo = $FITMODELECHO, eval = $FITMODELEVAL>>=
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
681
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
682 ##OPTION alter as needed
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
683
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
684 set.seed(4)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
685 modelFit <- switch(modName,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
686 gbm =
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
687 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
688 mix <- sample(seq(along = trainY))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
689 train(
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
690 trainX[mix,], trainY[mix], modName,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
691 verbose = FALSE,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
692 bag.fraction = .9,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
693 metric = optMetric,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
694 trControl = ctlObj,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
695 tuneGrid = tGrid)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
696 },
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
697
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
698 nnet =
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
699 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
700 train(
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
701 trainX, trainY, modName,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
702 metric = optMetric,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
703 linout = TRUE,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
704 trace = FALSE,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
705 maxiter = 1000,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
706 MaxNWts = 5000,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
707 trControl = ctlObj,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
708 tuneGrid = tGrid)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
709
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
710 },
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
711
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
712 svmRadial =, svmPoly =, svmLinear =
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
713 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
714 train(
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
715 trainX, trainY, modName,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
716 metric = optMetric,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
717 scaled = TRUE,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
718 trControl = ctlObj,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
719 tuneLength = gridSize)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
720 },
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
721 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
722 train(trainX, trainY, modName,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
723 trControl = ctlObj,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
724 metric = optMetric,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
725 tuneLength = gridSize)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
726 })
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
727
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
728 @
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
729
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
730 <<modelDescr, echo = $MODELDESCRECHO, results = $MODELDESCRRESULT>>=
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
731
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
732
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
733 summaryText <- ""
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
734
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
735 resampleName <- switch(tolower(modelFit$control$method),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
736 boot = paste("the bootstrap (", length(modelFit$control$index), " reps)", sep = ""),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
737 boot632 = paste("the bootstrap 632 rule (", length(modelFit$control$index), " reps)", sep = ""),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
738 cv = paste("cross-validation (", modelFit$control$number, " fold)", sep = ""),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
739 repeatedcv = paste("cross-validation (", modelFit$control$number, " fold, repeated ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
740 modelFit$control$repeats, " times)", sep = ""),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
741 lgocv = paste("repeated train/test splits (", length(modelFit$control$index), " reps, ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
742 round(modelFit$control$p, 2), "$\\%$)", sep = ""))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
743
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
744 tuneVars <- latexTranslate(tolower(modelInfo$label))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
745 tuneVars <- gsub("\\#", "the number of ", tuneVars, fixed = TRUE)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
746 if(ncol(modelFit$bestTune) == 1 && colnames(modelFit$bestTune) == ".parameter")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
747 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
748 summaryText <- paste(summaryText,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
749 "\n\n",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
750 "There are no tuning parameters associated with this model.",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
751 "To characterize the model performance on the training set,",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
752 resampleName,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
753 "was used.",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
754 "Table \\\\ref{T:resamps} and Figure \\\\ref{F:profile}",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
755 "show summaries of the resampling results. ")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
756
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
757 } else {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
758 summaryText <- paste("There",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
759 ifelse(nrow(modelInfo) > 1, "are", "is"),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
760 nrow(modelInfo),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
761 ifelse(nrow(modelInfo) > 1, "tuning parameters", "tuning parameter"),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
762 "associated with this model:",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
763 listString(tuneVars, period = TRUE))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
764
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
765
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
766
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
767 paramNames <- gsub(".", "", names(modelFit$bestTune), fixed = TRUE)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
768 for(i in seq(along = paramNames))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
769 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
770 check <- modelInfo$parameter %in% paramNames[i]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
771 if(any(check))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
772 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
773 paramNames[i] <- modelInfo$label[which(check)]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
774 }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
775 }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
776
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
777 paramNames <- gsub("#", "the number of ", paramNames, fixed = TRUE)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
778 ## Check to see if there was only one combination fit
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
779 summaryText <- paste(summaryText,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
780 "To choose",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
781 ifelse(nrow(modelInfo) > 1,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
782 "appropriate values of the tuning parameters,",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
783 "an appropriate value of the tuning parameter,"),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
784 resampleName,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
785 "was used to generated a profile of performance across the",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
786 nrow(modelFit$results),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
787 ifelse(nrow(modelInfo) > 1,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
788 "combinations of the tuning parameters.",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
789 "candidate values."),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
790
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
791 "Table \\\\ref{T:resamps} and Figure \\\\ref{F:profile} show",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
792 "summaries of the resampling profile. ", "The final model fitted to the entire training set was:",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
793 listString(paste(latexTranslate(tolower(paramNames)), "=", modelFit$bestTune[1,]), period = TRUE))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
794
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
795 }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
796 @
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
797
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
798 \Sexpr{summaryText}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
799
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
800 <<resampTable, echo = $RESAMPTABLEECHO, results = $RESAMPTABLERESULT>>=
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
801
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
802 tableData <- modelFit$results
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
803
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
804 if(all(modelInfo$parameter == "parameter"))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
805 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
806 tableData <- tableData[,-1, drop = FALSE]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
807 colNums <- c(length(modelFit$perfNames), length(modelFit$perfNames))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
808 colLabels <- c("Mean", "Standard Deviation")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
809 constString <- ""
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
810 isConst <- NULL
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
811 } else {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
812
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
813 isConst <- apply(tableData[, modelInfo$parameter, drop = FALSE],
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
814 2,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
815 function(x) length(unique(x)) == 1)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
816
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
817 numParamInTable <- sum(!isConst)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
818
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
819 if(any(isConst))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
820 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
821 constParam <- modelInfo$parameter[isConst]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
822 constValues <- format(tableData[, constParam, drop = FALSE], digits = 4)[1,,drop = FALSE]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
823 tableData <- tableData[, !(names(tableData) %in% constParam), drop = FALSE]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
824 constString <- paste("The tuning",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
825 ifelse(sum(isConst) > 1,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
826 "parmeters",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
827 "parameter"),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
828 listString(paste("``", names(constValues), "''", sep = "")),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
829 ifelse(sum(isConst) > 1,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
830 "were",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
831 "was"),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
832 "held constant at",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
833 ifelse(sum(isConst) > 1,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
834 "a value of",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
835 "values of"),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
836 listString(constValues[1,]))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
837
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
838 } else constString <- ""
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
839
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
840 cn <- colnames(tableData)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
841 for(i in seq(along = cn))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
842 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
843 check <- modelInfo$parameter %in% cn[i]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
844 if(any(check))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
845 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
846 cn[i] <- modelInfo$label[which(check)]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
847 }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
848 }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
849 colnames(tableData) <- cn
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
850
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
851 colNums <- c(numParamInTable,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
852 length(modelFit$perfNames),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
853 length(modelFit$perfNames))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
854 colLabels <- c("", "Mean", "Standard Deviation")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
855 }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
856
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
857 colnames(tableData) <- gsub("SD$", "", colnames(tableData))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
858 colnames(tableData) <- latexTranslate(colnames(tableData))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
859 rownames(tableData) <- latexTranslate(rownames(tableData))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
860
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
861 latex(tableData,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
862 rowname = NULL,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
863 file = "",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
864 cgroup = colLabels,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
865 n.cgroup = colNums,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
866 where = "h!",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
867 digits = 4,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
868 longtable = nrow(tableData) > 30,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
869 caption = paste(resampleName, "results from the model fit.", constString),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
870 label = "T:resamps")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
871 @
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
872
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
873 \setkeys{Gin}{ width = 0.9\textwidth}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
874 \begin{figure}[b]
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
875 \begin{center}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
876
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
877 <<profilePlot, echo = $PROFILEPLOTECHO, fig = $PROFILEPLOTFIG, width = 8, height = 6>>=
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
878
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
879 trellis.par.set(caretTheme(), warn = TRUE)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
880 if(all(modelInfo$parameter == "parameter") | all(isConst) | modName == "nb")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
881 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
882 resultsPlot <- resampleHist(modelFit)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
883 plotCaption <- paste("Distributions of model performance from the ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
884 "training set estimated using ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
885 resampleName)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
886 } else {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
887 if(modName %in% c("svmPoly", "svmRadial", "svmLinear"))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
888 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
889 resultsPlot <- plot(modelFit,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
890 metric = optMetric,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
891 xTrans = function(x) log10(x))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
892 resultsPlot <- update(resultsPlot,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
893 type = c("g", "p", "l"),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
894 ylab = paste(optMetric, " (", resampleName, ")", sep = ""))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
895
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
896 } else {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
897 resultsPlot <- plot(modelFit,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
898 metric = optMetric)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
899 resultsPlot <- update(resultsPlot,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
900 type = c("g", "p", "l"),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
901 ylab = paste(optMetric, " (", resampleName, ")", sep = ""))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
902 }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
903 plotCaption <- paste("A plot of the estimates of the",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
904 optMetric,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
905 "values calculated using",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
906 resampleName)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
907 }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
908 print(resultsPlot)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
909 @
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
910 \caption[Performance Plot]{\Sexpr{plotCaption}.}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
911 \label{F:profile}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
912 \end{center}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
913 \end{figure}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
914
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
915 <<stopWorkers, echo = $STOPWORKERSECHO, results = $STOPWORKERSRESULT>>=
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
916 ##<<stopWorkers, echo = FALSE, results = hide>>=
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
917 if(numWorkers > 1) stopCluster(cl)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
918 @
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
919
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
920 <<testPred, results = $TESTPREDRESULT, echo = $TESTPREDECHO>>=
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
921
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
922
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
923 if(pctTrain < 1)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
924 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
925 cat("\\clearpage\n\\section*{Test Set Results}\n\n")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
926
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
927 testPreds <- extractPrediction(list(fit = modelFit),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
928 testX = testX, testY = testY)
2
251849bed194 Uploaded
deepakjadmin
parents: 0
diff changeset
929 testPreds_all <- testPreds
0
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
930 testPreds <- subset(testPreds, dataType == "Test")
2
251849bed194 Uploaded
deepakjadmin
parents: 0
diff changeset
931 testPreds_test <- testPreds
0
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
932 values <- modelFit$control$summaryFunction(testPreds)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
933 names(values) <- gsub("RMSE", "root mean squared error", names(values), fixed = TRUE)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
934 names(values) <- gsub("Rsquared", "$R^2$", names(values), fixed = TRUE)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
935 values <- format(values, digits = 3)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
936
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
937 testString <- paste("Based on the test set of",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
938 nrow(testX),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
939 "samples,",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
940 listString(paste(names(values), "was", values), period = TRUE),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
941 " A plot of the observed and predicted outcomes for the test set ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
942 "is given in Figure \\\\ref{F:obsPred}.")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
943 testString <- paste(testString,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
944 " Using ", resampleName,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
945 ", the training set estimates were ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
946 resampleStats(modelFit),
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
947 ".",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
948 sep = "")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
949
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
950 axisRange <- extendrange(testPreds[, c("obs", "pred")])
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
951 obsPred <- xyplot(obs ~ pred,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
952 data = testPreds,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
953 xlim = axisRange,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
954 ylim = axisRange,
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
955 panel = function(x, y)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
956 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
957 panel.abline(0, 1, col = "darkgrey", lty = 2)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
958 panel.xyplot(x, y, type = c("p", "g"))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
959 panel.loess(x, y, col = "darkred", lwd = 2)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
960
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
961
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
962 },
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
963 ylab = "Observed Response",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
964 xlab = "Predicted Response")
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
965
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
966 pdf("obsPred.pdf", height = 8, width = 8)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
967 trellis.par.set(caretTheme())
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
968 print(obsPred)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
969 dev.off()
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
970
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
971 } else testString <- ""
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
972 @
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
973 \Sexpr{testString}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
974
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
975
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
976 <<classProbsTex, results = $CLASSPROBSTEXRESULT, echo = $CLASSPROBSTEXECHO>>=
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
977
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
978
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
979 if(pctTrain < 1)
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
980 {
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
981 cat(
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
982 paste("\\begin{figure}[p]\n",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
983 "\\begin{center}\n",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
984 "\\includegraphics{obsPred}",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
985 "\\caption[Observed V Fitted Values]{",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
986 "The observed and predicted responses. ",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
987 "The grey line is the line of identity while the",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
988 "solid red line is a smoothed trend line.}\n",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
989 "\\label{F:obsPred}\n",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
990 "\\end{center}\n",
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
991 "\\end{figure}"))
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
992 }
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
993
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
994 @
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
995
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
996 \section*{Versions}
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
997
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
998 <<versions, echo = FALSE, results = tex>>=
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
999 toLatex(sessionInfo())
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
1000
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
1001 @
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
1002
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
1003 <<save-data, echo = $SAVEDATAECHO, results = $SAVEDATARESULT>>=
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
1004 ## change this to the name of modName....
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
1005 Fit<-modelFit
3
31ec202700b0 Uploaded
deepakjadmin
parents: 2
diff changeset
1006 save(Fit,testPreds_all,testPreds_test,file="$METHOD-Fit.RData")
0
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
1007 @
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
1008 The model was built using $METHOD and is saved as $METHOD-Fit.RData for reuse. This contains the variable Fit.
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
1009
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
1010
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
1011 \end{document}'''
b82c88293260 Uploaded
deepakjadmin
parents:
diff changeset
1012 return template4Rnw