10 LAT
E
XCODE FOR THIS DOCUMENT
as there are several \code{print}, \code{plot}, and \code{latex} methods
for objects created by \code{summary.formula}. The \code{latex} methods
create all the needed table elements, then invoke the
\code{latex.default} method in \code{Hmisc} to build the complete set of
\LaTeX\ commands to make each table.
The method of data summarization to be done by \code{summary.formula}
is specified in the parameter \code{method}. These methods are defined
below. For the first and third methods, the statistics used to
summarize the data may be specified in a flexible manner by the user
(e.g., the geometric mean, $33^{rd}$ percentile, or Kaplan--Meier
2--year survival estimate, mixtures of several statistics). The
default summary statistic is the mean, which for a binary response
variable is the proportion of positive responses.
\begin{description}
\item[\code{method=’response’}:\ ] The response variable may be
multivariate, and any number of statistics may be used to summarize
the responses. Sometimes dependent variables are multivariate
because they indicate follow--up time and censoring, and sometimes
they are multivariate because there are several response variables
(e.g., systolic and diastolic blood pressure). The responses are
summarized separately for each independent variable (independent
variables are not cross--classified). Continuous independent
variables are automatically stratified into quantile groups. One or
more of the independent variables may be stratification factors, in
which all computations are done separately by levels of these
categorical variables. The stratification variables form major
column groupings in tables. For multivariate responses, subjects are
considered to be missing if {\em any} response variable is missing.
\item[\code{method=’reverse’}:\ ]
This format is typical of baseline characteristic tables describing
the usual success of randomization. Here the single dependent
variable must be categorical (e.g., treatment assignment), and the
‘‘independent’’ variables are broken down separately by the dependent
variable. Continuous independent variables are described by three
quantiles (quartiles by default), and categorical ones are described
by counts and percentages. There is an option to automatically
generate test statistics for testing across columns of
\code{’reverse’} tables.
\item[\code{method=’cross’}:\ ]
The \code{’cross’} method allows allows for multiple dependent
variables and multiple statistics to summarize each one. If there is
more than one independent variable (up to three is allowed),
statistics are computed separately for all cross--classifications of
61
Online pdf to html converter - SDK Library project:C# PDF Convert to HTML SDK: Convert PDF to html files in C#.net, ASP.NET MVC, WinForms, WPF application
How to Convert PDF to HTML Webpage with C# PDF Conversion SDK
www.rasteredge.com
Online pdf to html converter - SDK Library project:VB.NET PDF Convert to HTML SDK: Convert PDF to html files in vb.net, ASP.NET MVC, WinForms, WPF application
PDF to HTML Webpage Converter SDK for VB.NET PDF to HTML Conversion
www.rasteredge.com
10 LAT
E
XCODE FOR THIS DOCUMENT
the independent variables, and marginal and overall statistics may
optionally be computed. \code{summary.formula} for this method
outputs a data frame containing the combinations of predictors along
with the response summaries. This data frame may be summarized
graphically in various ways using the \splus\ \code{trellis}
library or \R\ \code{lattice} package\footnote{For this purpose, the
Hmisc \code{summarize} function
may be more useful, if you don’t want marginal statistics computed.}.
A \LaTeX\ printing method, for the case where there is exactly two
predictors, typesets a two--way table where the first predictor forms
rows and the second forms columns. Like \code{method=’response’}, continuous
variables are automatically divided into quantile groups.
\end{description}
The \code{latex} methods in the \code{Hmisc} library
create tables using standard \LaTeX\ commands. These tables are
inserted into the master document at the desired location using an
\verb|\input{}| command. \code{latex} methods allow a font \code{size}
argument. For example, you may specify \code{size=’small’} to
\code{latex()}, or you may want to use a generic size that is set at
\LaTeX\ run time in the document preamble. For example,
specify \verb|\def\tsz{small}| in the master document and
specify \code{size=’tsz’} to \code{latex()}. Then you can define (and
redefine) the size for tables without modifying the individual
\code{.tex} files created by \code{latex()}. Another approach using
\LaTeX’s \code{relsize} style is discussed on P.~\pageref{relsize}.
\subsection{Reports Formatted to Describe Responses}
Tables \ref{s1}--\ref{s4b} were produced by the S \code{latex}
function (actually, \\ \code{latex.\-summary.\-formula.\-response}),
which is run on an object created by the \code{summary} function with
\code{method=’response’}, the default.
Table \ref{s1} presents Kaplan--Meier 2 and 5 year survival estimates and
mean life length of subjects in the Mayo Clinic primary biliary
cirrhosis dataset available from
\href{http://hesweb1.med.virginia.edu/biostat/s/data}
{\url{hesweb1.med.virginia.edu/biostat/s/data}}.
The calculations are subsetted on various patient characteristics. For
estimating mean life length, an exponential survival model was assumed
(the estimate is years per event). Continuous variables are
categorized into quartiles automatically. Each quartile group is
identified using the upper and lower endpoints within that quartile.
The code for this example follows.
\sinput{kmsurv.s}
62
SDK Library project:Online Convert PDF to HTML5 files. Best free online PDF html
Online PDF to HTML5 Converter. Download Free Trial. Convert a PDF file to HTML. Just upload your file by clicking on the blue button
www.rasteredge.com
SDK Library project:XDoc.Converter for .NET, Support Documents and Images Conversion
Convert Word, Excel and PDF to image. Next Steps. Download Free Trial Download and try Converter for .NET with online support. See Pricing Check out the prices.
www.rasteredge.com
10 LAT
E
XCODE FOR THIS DOCUMENT
\rhead{\scriptsize The {\em EXAMPLE} Study \\
Protocol xyz--001 \\
\today}
\input{s1}
This table is converted to two dot plots (Figures \ref{f1a} and
\ref{f1b}) using the \code{plot} method for an object created by
\code{summary} with \code{method=’response’} (see previous code).
The Hmisc \code{setpdf} function is used to create the \code{pdf}
graphics files. See Section \ref{latex.code} for the \LaTeX\ code
used to insert these graphics.
\fig{f1a}{Two and five--year Kaplan--Meier survival probability
estimates}{Kaplan--Meier estimates}{1}
\fig{f1b}{Estimated mean life length from an exponential survival
model}{Estimated life length}{1}
Table \ref{s2} is similar to Table \ref{s1} except that the
Kaplan--Meier estimates are not shown, life length estimates are also
stratified by treatment assigned (using the \code{stratify} function),
and continuous variables are grouped into tertiles.
\sinput{s2.s}
{\small\input{s2}}
This table is converted to a dot plot in Figure \ref{f2}.
\fig{f2}{Estimated mean life length from an exponential survival
model}{Estimated life length stratified by treatment}{1}
Table \ref{s3} displays quartiles of cholesterol and bilirubin by
various patient characteristics. To compute statistics simultaneously
for cholesterol and bilirubin, we must use the S \code{cbind}
function to create a bivariate response variable (a 2--column matrix).
To compute quantiles for this new 2--variable entity we have to use
the \code{apply} function instead of a simple invocation to
\code{quantile}. For \code{age}, pre--specified intervals are used.
\sinput{s3.s}
\input{s3}
Table \ref{s3} is shown as a graphic in Figure \ref{f3}.
\fig{f3}{Quartiles of cholesterol and bilirubin}{Distribution of
cholesterol and bilirubin}{.8}
Tables \ref{s4a} and \ref{s4b} summarizes only bilirubin, but both the
mean and median are printed. Separate tables are made for the two
arms of the randomized study. For the active arm, the data are shown
63
SDK Library project:C#: How to Use SDK to Convert Document and Image Using XDoc.
This online C# tutorial will tell you how to implement conversion to Tiff file from PDF, Word, Excel You may use our converter SDK to easily convert
www.rasteredge.com
SDK Library project:VB.NET PDF - Convert PDF Online with VB.NET HTML5 PDF Viewer
RasterEdge. PRODUCTS: ONLINE DEMOS: Online HTML5 Document Viewer; Online XDoc.PDF Demo▶: C#: Convert PDF to HTML; C#: Convert PDF to Jpeg; C# File: Compress
www.rasteredge.com
10 LAT
E
XCODE FOR THIS DOCUMENT
in Figure \ref{f4}.
\sinput{s4.s}
\input{s4}
\fig{f4}{Mean (solid circle) and median (open circle) bilirubin for
D--penicillamine patients}{Mean and median bilirubin for treated patients}{1}
\clearpage
\subsection{Baseline Characteristic Tables}
Here the S \code{summary} function is used with the parameter
\code{method=’reverse’}, which reverses the role of the dependent variable
and the independent variables. The dependent variable is assumed to be
categorical; in clinical trials it will be the treatment assignment.
The next example again uses the primary biliary cirrhosis dataset.
The result is in Table \ref{s5}. It is printed in landscape mode
using the \LaTeX\ \code{lscape} package, and using the \LaTeX\
\code{small} font. For \code{’reverse’}-type tables, an option
\code{test=TRUE} will cause \code{summary.formula} to compute test
statistics for testing across columns. Default tests are Wilcoxon or
Kruskal-Wallis for continuous variables and Pearson $\chi^2$ for
categorical ones, but users may specify their own statistical tests\footnote{
In randomized trials, tests for baseline imbalance are unwarranted and
difficult to interpret, in addition to causing multiple comparison
problems (see Stephen Senn, {\em Statistical Issues in Drug
Development}).}.
\sinput{s5.s}
\clearpage
\thispagestyle{empty} % suppress page number
\begin{landscape}
\input{s5}
\end{landscape}
To convert Table \ref{s5} to graphical form,
\code{plot.\-summary.\-formula.\-reverse} constructs two pages. The
first page contains statistics for all of the categorical variables,
as all of these statistics are on the same scale (proportion or
percent in each category). The second page contains a matrix of dot
charts showing (by default) the 3 quartiles of each right--hand--side
variable (on the $x$--axis), stratified by the left--hand variable (on
the $y$--axis of each dot plot). The second set of plots is scaled to the
most extreme 0.025 to 0.975 quantiles of the variable over all
treatment groups. \R\ can plot Greek letters, superscripts,
subscripts, and mathematical operators, and Figure \ref{f5a} and
\ref{f5b} take advantage of this capability. \splus\ does not have
this capability, so simpler output would appear.
64
SDK Library project:VB.NET PDF- View PDF Online with VB.NET HTML5 PDF Viewer
RasterEdge. PRODUCTS: ONLINE DEMOS: Online HTML5 Document Viewer; Online XDoc.PDF Demo▶: C#: Convert PDF to HTML; C#: Convert PDF to Jpeg; C# File: Compress
www.rasteredge.com
SDK Library project:C# HTML5 PDF Viewer SDK to convert and export PDF document to
RasterEdge. PRODUCTS: ONLINE DEMOS: Online HTML5 Document Viewer; Online XDoc.PDF Demo▶: C#: Convert PDF to HTML; C#: Convert PDF to Jpeg; C# File: Compress
www.rasteredge.com
10 LAT
E
XCODE FOR THIS DOCUMENT
\fig{f5a}{Proportions of patients in various categories of baseline
variables, stratified by drug. Pearson $\chi^2$ test results are
given.}{Categorical variables stratified by drug}{.75}
\fig{f5b}{Box-percentile plots for continuous baseline variables in prostate
cancer trial. 0.90, 0.75, 0.50, and 0.25 coverage intervals are
shown. The solid circle depicts the mean and the vertical line the
median. Kruskal-Wallis tests are also shown.}{Continuous variables
stratified by drug}{.7}
Table \ref{s6} presents a description of data from a trial for
prostate cancer (from Byar and Green). The \code{prostate} data frame
is available from
\href{http://hesweb1.med.virginia.edu/biostat/s/data}
{\url{hesweb1.med.virginia.edu/biostat/s/data}}.
The \code{overall} option is used to add a final column of statistics
for the whole sample. The following listing contains code that
produced all the tables and figures for the \code{prostate} data.
This is a good application of the \LaTeX\ \code{relsize} style\label{relsize}.
Specifying an overall size of the table of \code{smaller[3]} causes
\code{latex()} to issue the command \verb|\smaller[3]| at the start of
the table and changes the overall table’s font size to three levels below
\code{normalsize}, which is \LaTeX’s \code{scriptsize}. Specifying
\code{outer.size} and \code{Nsize} as \code{smaller} means to use one
size smaller than this within the table, for $25^{th}$ and $75^{th}$
percentiles and for the sample sizes above the columns. One advantage
of \code{relsize} is that if you use for example \verb|{\smaller foo}|
within a footnote, the next smaller size than is used for the overall
footnoted text will be the size for \code{foo}.
\sinput{prostate.s}
\clearpage
\thispagestyle{empty}
\begin{landscape}
\input{s6}
\end{landscape}
\fig{f6a}{Distribution of categorical baseline variables in prostate
cancer trial}{Categorical variables in prostate trial}{.8}
\fig{f6b}{Quartiles of continuous variables in prostate cancer trial.
$x$--axes are scaled to the lowest 0.025 and highest 0.975 quantiles
over all groups for each variable.}{Continuous variables in prostate
trial}{.8}
\clearpage
\subsection{Data Displays from Cross--Classifying Variables}
The final examples use cross--classification on possibly more than one
65
SDK Library project:VB.NET PDF- HTML5 PDF Viewer for VB.NET Project
Convert PDF Online in HTML5 PDF Viewer. With RasterEdge VB.NET HTML5 PDF Viewer, users can directly convert and export PDF to Tiff, HTML file, DOCX and image
www.rasteredge.com
SDK Library project:RasterEdge for .NET Online Demo
Online PDF Editor (beta); Online Document Viewer; Online Convert PDF to Word; Online Convert PDF to Tiff; Online Convert PDF to Html. SUPPORT:
www.rasteredge.com
10 LAT
E
XCODE FOR THIS DOCUMENT
independent variable. The summary function with \code{method=’cross’}
produces a data frame containing the cross--classifications. This
data frame is suitable for multi-panel trellis displays although if
marginal statistics are not needed, the Hmisc \code{summarize} function
is better. The first example in this series was \LaTeX’ed to create
Table \ref{s7} (the code is listed above).
\input{s7}
There is no \code{plot} method for \code{method=’cross’} tables, but you
can use Trellis graphics on the data frame that is created by
\code{summary} (see code above). For this purpose, the \code{Hmisc}
\code{summarize} function might be better than \code{summary.formula}
for producing the needed aggregated data.
\fig{f7}{Proportion of patients with acid phosphatase exceeding 1.0,
cross--classified by tumor size and bone metastasis}{Proportion of
patients with AP $ > 1.0$}{1}
%Turn off header
\rhead{}
\section{Handling Special Variables}
\subsection{Multiple Choice Variables}
Clinical reports frequuently must summarize ‘‘checklist’’ or
multiple--choice variables. Such variables are typically listed on a
case report form using one of two methods:
\begin{enumerate}
\item
Specify up to three primary presenting symptoms: \\
\verb|_________ ________ ________| \\
Here the respondent writes in up to three symptom codes from a
list of perhaps 15 integer codes defined below the question.
\item
Check symptoms that are present: \\
\verb|headache
__
stomach ache __
hangnail __| \\
\verb|back pain __
neck ache
__
wheezing __|
\end{enumerate}
When such data are processed, either a series of three categorical
variables or 6 binary variables is created. In what follows we assume
that the binary variables are coded as numeric 0/1 or as character
variables with values (ignoring case) of \code{’yes’} and
\code{’present’} denoting a positive response. In composing a report,
we usually want to consider all of these component variables under the
umbrella of \code{’Presenting Symptoms’}. If using presenting symptoms
as stratification (independent) variables, we will want to know an
outcome statistic computed separately for those subjects having
headache, those having stomach ache, etc. These categories will
overlap for some subjects. When summarizing presenting symptoms
stratified by treatment, we will want to know the proportion of
66
10 LAT
E
XCODE FOR THIS DOCUMENT
subjects in each treatment group having headache, the proportion
having stomach ache, etc., with the proportions summing to $ > 1.0$ if
any subject had more than one symptom.
The Hmisc \code{summary.formula} function can handle multiple choice /
checklist variables after they are combined into a matrix. The Hmisc
\code{mChoice} function will take as input a series of categorical
vector variables (using the first input format above), and make a
matrix with the number of columns equal to the number of choices that
were actually selected in the data\footnote{There is also an option to
create a column for \code{’none’} for subjects for whom no choices were
selected. The input variables need not have the same levels. A
master list of categories is constructed by finding all unique
categories in the levels of all variables combined, preserving the
order of levels for the factor variables.}. This new matrix consists
of logical \code{T/F} values. You can also give \code{summary.formula}
a matrix you create, if using input format two above. The elements of
this matrix need to be numeric with values 0 and 1, logical \code{F/T},
or character with values (ignoring case) of \code{’yes’} or \code{’present’}.
Here is an example of the use of \code{mChoice} from its help file.
\bex
> options(digits=3)
> set.seed(173)
> sex \Gets factor(sample(c("m","f"), 500, rep=T))
> age \Gets rnorm(500, 50, 5)
> treatment \Gets factor(sample(c("Drug","Placebo"), 500, rep=T))
> # Generate a 3-choice variable; each of 3 variables has 5 possible levels
> symp \Gets c(’Headache’,’Stomach Ache’,’Hangnail’,
+
’Muscle Ache’,’Depressed’)
> symptom1 \Gets sample(symp, 500, T)
> symptom2 \Gets sample(symp, 500, T)
> symptom3 \Gets sample(symp, 500, T)
> Symptoms \Gets mChoice(symptom1, symptom2, symptom3, label=’Primary Symptoms’)
> # Note: In this example, some subjects have the same symptom checked
> # multiple times; in practice these redundant selections would be NAs
> # mChoice will ignore these redundant selections
> # If the multiple choices to a single survey question were already
> # stored as a series of T/F yes/no present/absent questions we could do:
> # Symptoms <- cbind(headache,stomach.ache,hangnail,muscle.ache,depressed)
> # where the 5 input variables are all of the same type: 0/1,logical,char.
> # These variables cannot be factors in this case as cbind would
> # store integer codes instead of character strings.
67
10 LAT
E
XCODE FOR THIS DOCUMENT
> # To give better column names can use
> # cbind(Headache=headache, ’Stomach Ache’=stomach.ache, ...)
> # Following 8 commands only for checking mChoice
> data.frame(symptom1,symptom2,symptom3)[1:10,]
symptom1
symptom2
symptom3
1
Headache Stomach Ache
Headache
2
Depressed Muscle Ache
Depressed
3 Stomach Ache Muscle Ache Stomach Ache
4
Hangnail Muscle Ache
Headache
5 Muscle Ache
Headache
Depressed
6
Headache
Headache
Headache
7 Stomach Ache Stomach Ache Muscle Ache
8 Muscle Ache
Headache
Depressed
9
Hangnail
Hangnail
Hangnail
10
Depressed Muscle Ache
Depressed
> Symptoms[1:10,] # Print first 10 subjects’ new binary indicators
Primary Symptoms
Depressed Hangnail Headache Muscle Ache Stomach Ache
[1,]
F
F
T
F
T
[2,]
T
F
F
T
F
[3,]
F
F
F
T
T
[4,]
F
T
T
T
F
[5,]
T
F
T
T
F
[6,]
F
F
T
F
F
[7,]
F
F
F
T
T
[8,]
T
F
T
T
F
[9,]
F
T
F
F
F
[10,]
T
F
F
T
F
> meanage \Gets single(5)
> for(j in 1:5) meanage[j] \Gets mean(age[Symptoms[,j]])
> names(meanage) \Gets dimnames(Symptoms)[[2]]
> meanage
Depressed Hangnail Headache Muscle Ache Stomach Ache
49.9
49.8
49.9
50.3
49.8
> # Manually compute mean age for 2 symptoms
> mean(age[symptom1==’Headache’ | symptom2==’Headache’ | symptom3==’Headache’])
[1] 49.9
> mean(age[symptom1==’Hangnail’ | symptom2==’Hangnail’ | symptom3==’Hangnail’])
[1] 49.8
68
10 LAT
E
XCODE FOR THIS DOCUMENT
> #Frequency table sex*treatment, sex*Symptoms
> summary(sex {\Twiddle} treatment + Symptoms, fun=table)
> # could also do summary(sex {\Twiddle} treatment + mChoice(symptom1,...),...)
sex
N=500
----------------+------------+---+---+---+
|
|N |f |m |
----------------+------------+---+---+---+
treatment
|Drug
|246|123|123|
|Placebo
|254|129|125|
----------------+------------+---+---+---+
Primary Symptoms|Depressed
|242|130|112|
|Hangnail
|238|125|113|
|Headache
|236|110|126|
|Muscle Ache |255|127|128|
|Stomach Ache|252|125|127|
----------------+------------+---+---+---+
Overall
|
|500|252|248|
----------------+------------+---+---+---+
> #Compute mean age, separately by 3 variables
> summary(age {\Twiddle} sex + treatment + Symptoms)
age
N=500
----------------+------------+---+----+
|
|N |age |
----------------+------------+---+----+
sex
|f
|252|49.8|
|m
|248|49.9|
----------------+------------+---+----+
treatment
|Drug
|246|49.7|
|Placebo
|254|50.0|
----------------+------------+---+----+
Primary Symptoms|Depressed
|242|49.9|
|Hangnail
|238|49.8|
|Headache
|236|49.9|
|Muscle Ache |255|50.3|
|Stomach Ache|252|49.8|
----------------+------------+---+----+
Overall
|
|500|49.9|
----------------+------------+---+----+
69
10 LAT
E
XCODE FOR THIS DOCUMENT
> f \Gets summary(treatment {\Twiddle} age + sex + Symptoms, method="reverse")
Descriptive Statistics by treatment
----------------------------+--------------+--------------+
|Drug
|Placebo
|
|(N=246)
|(N=254)
|
----------------------------+--------------+--------------+
age|46.5/49.8/52.5|46.4/50.1/53.4|
----------------------------+--------------+--------------+
sex : m|
50% (123) |
49% (125) |
----------------------------+--------------+--------------+
Primary Symptoms : Depressed|
50% (122) |
47% (120) |
----------------------------+--------------+--------------+
Hangnail|
47% (116) |
48% (122) |
----------------------------+--------------+--------------+
Headache|
45% (110) |
50% (126) |
----------------------------+--------------+--------------+
Muscle Ache|
48% (117) |
54% (138) |
----------------------------+--------------+--------------+
Stomach Ache|
53% (130) |
48% (122) |
----------------------------+--------------+--------------+
\eex
\subsection{Conditionally Defined Variables}
Another type of variable that is common in clinical reports is a
variable that is of no interest unless another variable equalled a
certain value. A common example is cause of death. We may want our
report to contain the proportion of patients dying on each treatment,
and for the deaths, we may want to know the proportions of deaths due
to each cause. For the latter calculation, the denominator is not the
number of subjects in a treatment but rather the number of subjects
who died on that treatment. \code{summary.formula} will handle such
variables correctly as long as they have missing values when they are
not pertinent. For example, suppose that the variable
\code{death.cause} is \code{NA} if \code{death} is \code{F} (false)
and \code{death.cause} is a categorical (or \code{mChoice}) variable if
\code{death} is \code{T}. Then a \code{’reverse’} type summary will produce
the needed proportions of \code{death} as well as \code{death.cause}.
\section{Alternate Approaches}
\subsection{Literate Programming}
In \emph{literate programming} as used in reproducible research (see
\href{http://hesweb1.med.virginia.edu/biostat/s/LiveDoc.html}
{\url{http://hesweb1.med.virginia.edu/biostat/s/LiveDoc.html}}),
70
Documents you may be interested
Documents you may be interested