Download There's No Such Thing as Normal Clinical Trials Data, or Is There?

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Nonlinear dimensionality reduction wikipedia , lookup

Transcript
There’s No Such Thing as Normal Clinical Trials Data, or Is There?
Daphne Ewing, Synteract, Inc., Ambler, PA
also called a horizontal data structure, where the data set
is wide with more variables and fewer observations.
ABSTRACT
Clinical Trials data comes in all shapes and sizes
depending upon the therapeutic area, indication and phase
of the trial. Quite a bit of the data arriving on Case
Report Forms (CRFs) is fairly standard (e.g.
Demography, Adverse Event, Medications, Laboratory,
etc.), and hence can be stored in fairly standard data
structures. Designing clinical data structures for data
entry is important, but it should be done with some
understanding of the analysis that will be performed.
Once an appropriate clinical data structure is arrived at
for data entry, it is important to then determine how to
best use the data in the analysis environment.
This paper will discuss data normalization and what it
means along with the effects it has on SAS programs
used to list and summarize clinical trials data. Side by
side examples of programs and output from standard data
structures versus normalized data structures will provide
proof of the importance of normalization.
The term “normalization” can mean different things in
different environments. It is used within this paper to
describe a data structure which describes one element of
data per observation within a data set. This means that
there may be one or more context variables describing
where the data belongs (e.g. GROUP, PATNUM, VISIT,
etc.), along with one or more variables describing specific
data points (e.g. VAR, VAL, VALC, VALN, FLAG,
etc.). Another term used when referring to a normalized
data structure is a vertical data structure. This implies the
data exists in a long fashion with many observations,
fewer variables.
Type
CHAR
CHAR
NUM
NUM
NUM
NUM
CHAR
NUM
CHAR
Len
1
12
8
8
8
8
20
8
20
Type
CHAR
CHAR
NUM
NUM
NUM
NUM
NUM
NUM
NUM
Len
1
12
8
8
8
8
8
8
8
Label
TREATMENT GROUP
PATIENT NUMBER
VISIT
DATE SAMPLE COLLECTED
TIME SAMPLE COLLECTED
HEMOGLOBIN
HEMATOCRIT
RED BLOOD CELLS
WHITE BLOOD CELLS
Sample Denormalized Structure
Laboratory data is typically prepared in a vertical or
normalized fashion due to the nature of the data.
However, other data sets can be created in this fashion as
well, including demography, vital signs, physical exam,
etc. Each data type being collected, lends itself to one or
the other of these data structures and the question is, can
you or should you stick to one structure or the other?
DATA LISTINGS
NORMALIZATION
Variable
GROUP
PATNUM
VISIT
DTCOLL
TMCOLL
LABCODE
LABVALC
LABVALN
LABVAL
Variable
GROUP
PATNUM
VISIT
DTCOLL
TMCOLL
HGB
HCT
RBC
WBC
Label
TREATMENT GROUP
PATIENT NUMBER
VISIT
DATE SAMPLE COLLECTED
TIME SAMPLE COLLECTED
LAB TEST CODE
CHARACTER LAB VALUE
NUMERIC LAB VALUE
DISPLAY VALUE
Sample Normalized Structure
The denormalized file structure may be more typical,
where the context variables still exist and there is usually
only one record per set of context variable values. In a
denormalized data set, there is a variable for each data
point (e.g. AGE, SEX, RACE, etc.). This file structure is
The horizontal data structure (HDEMO) is very easily
listed using either PROC REPORT or DATA _NULL_.
The context variables are displayed on the left of the
report (GROUP and PATNUM), while the specific data
points are displayed to the right (AGE, SEX, RACE,
WGT and HGT). The code in Example-1 below shows
how simple it is to produce a data listing when the data
are denormalized. The output of this PROC REPORT
code can be found in Output-1.
title1 'Normalized Data Paper';
title2 'Sample Horizontal Demography Listing';
proc report nowd data = hdemo center missing
headline headskip;
columns group patnum age sex race hgt wgt;
define group / order
width=15 format=$trt.
'Treatment Group';
define patnum / order
width=10
'Patient Number';
define age
/ display width=15 format=4.0
'Age (yrs)' center;
define sex
/ display width=15 format=$sexs.
'Sex';
define race
/ display width=15
format=$races. 'Race';
define hgt
/ display width=15 format=5.2
'Height (in)';
define wgt
/ display width=15 format=5.2
'Weight (kg)';
break after group /skip;
run;
title2;
Example-1
If the data are normalized, there are a few more steps
to take, but these could easily be placed in macros (not
described here). There are a number of ways to achieve
similar results, below is just one option. Example-2 uses
the VAR variable in the normalized data set along with a
format associated with each of the values (e.g.
VARCODE), macro variables can be created which can
be used to label the columns in the output.
Proc format;
value varcode
1 = 'Age (yrs)'
2 = 'Sex'
3 = 'Race'
4 = 'Height (in)'
5 = 'Weight (kg)';
run;
proc sort data = vdemo(keep=var) out=lbl
nodupkey;
by var;
run;
data _null_;
set lbl;
length lbl $20;
lbl = put(var,varcode.);
select(var);
when(1) call symput('lbl1',lbl);
when(2) call symput('lbl2',lbl);
when(3) call symput('lbl3',lbl);
when(4) call symput('lbl4',lbl);
when(5) call symput('lbl5',lbl);
otherwise ;
end;
run;
Example-2
Using the TRANSPOSE Procedure along with PROC
REPORT, the vertical data can easily be listed in a similar
fashion to the report used using the horizontal data as
shown in Example-3 below and displayed in Output-2.
proc transpose data = vdemo out=demo prefix=col;
by patnum group;
var val;
run;
options pageno=1;
title2 'Sample Vertical Demography Listing';
proc report nowd data = demo center missing
headline headskip;
columns group patnum col1 col2 col3 col4 col5;
define group
/ group
width=15 format=$trt.
'Treatment Group';
define patnum / group
width=10
'Patient Number';
define col1
/ display width=15 "&lbl1";
define col2
/ display width=15 "&lbl2";
define col3
/ display width=15 "&lbl3";
define col4
/ display width=15 "&lbl4";
define col5
/ display width=15 "&lbl5";
break after group /skip;
run;
reporting code found in Example-4 is used to generate
the output found in Output-3.
data vdata;
merge db.vchem
db.vheme;
by patnum visit dtcoll tmcoll labcode;
/* only four lab tests for testing purposes */
if (labcode in (100,101,300,301));
/* remove lab values which are character */
if (labvalc ne ' ') then delete;
run;
/* Prepare Summary from VERTICAL data */
data vdata;
merge vdata(in=inlab)
db.treatmnt(in=intrt);
by patnum;
if inlab and intrt;
run;
options pageno=1;
title2 'Sample Vertical Laboratory Listing';
proc report nowd data = vdata center missing
headline headskip split='*';
columns group patnum visit
labcode, labval labvaln;
define group
define
define
define
define
define
/ group
width=15 format=$trt.
'Treatment Group';
patnum / group
width=10
'Patient Number';
visit / group
width=10 format=visit.
'Visit' order=internal left;
labcode/ across width=15
'-Laboratory Test-';
labval / display width=15 'Result';
labvaln/ analysis noprint;
break after group /skip;
run;
title2;
Example-4
The above program only includes four lab parameters
(which fit nicely on the page). In the event you are
displaying more than four to five lab parameters a macro
can be generated where you tell the program which lab
parameters to display. In the code in Example-4, note the
LABVALN variable is used as an ANALYSIS NOPRINT
variable. This is a little trick to allow PROC REPORT to
process the ACROSS DISPLAY variables. Note when
you use the ACROSS variables, the context variables
must be GROUP variables, not just ORDER variables.
When preparing data listings, a horizontal data
structure is simple and straight forward. However, when
your job is such that you deal with different studies, with
slightly different CRFs and possibly different data points,
a vertical structure lends itself to using macros, macro
variables and pre-defined programs.
Example-3
The vertical data structure can be more easily reported
using the ACROSS variable definition within PROC
REPORT. Using the normalized laboratory data, the
The data expected and listed in Example-1 and
Example-3 included AGE, SEX, RACE, WEIGHT and
HEIGHT. If the next study contains exactly the same
number of variables (5) but they are different (e.g. DOB,
AGE, WEIGHT, SMKHIST, ALCHIST), and the data
were denormalized, the PROC REPORT code would have
to change to accommodate the new variable names and
data points.
data hdemo;
merge db.hdemo(rename=(sex=sexc race=racec))
db.treatmnt;
by patnum;
The key advantage to listing the data from a
normalized structure is that the program can be written in
such a way that it does NOT have to know what the data
points are, it simply finds the unique data elements and
displays them. The PROC REPORT code along with the
labeling and transposition code preceding it would NOT
change at all for a new study with the same number of
variables.
/* reset Sex and Race to text */
sex = put(sexc,$sexs.);
if (race eq 'O') then race = otspec;
else race = put(racec,$races.);
run;
In the event that the number of variables changes, the
PROC REPORT code for both data structures would have
to be modified slightly, so the difference would be less
apparent. However, if your standard program code was
designed in such a way that the PROC REPORT code
was written based on the number of transposed variables
created, then you would NOT have to change the code for
the normalized data structure, where you would always
have to change the code when listing a different number
of variables in a horizontal data structure.
Another note of caution in regards to using the
normalized data structure.
When using a format
statement to decode a variable and then placing this into a
macro variable as shown in Example-2, be sure that the
WIDTH length is long enough to handle the length of the
labels you are creating.
DATA SUMMARIES
Data summarization and analysis is performed based
on the study design. There are many methods for
performing clinical analysis and the programmer or
statistician is responsible for selecting the most
appropriate method. Looking exclusively at the data
summarization methodologies, specifically in regards to
using vertical or horizontal data structures, there are
methods to choose which make the vertical data structure
more robust.
Beginning with the horizontal data structure, let’s
assume we are dealing with the demography data again.
This data represents both numeric and character data
which is summarized using two different SAS
procedures, namely PROC MEANS and PROC FREQ
respectively.
Again, this is a choice, as PROC
SUMMARY would summarize the numeric data just as
well. The code found in Example-5 shows the PROC
FREQ code to summarize the character data found in the
horizontal demography (HDEMO) data set. The code
also demonstrates one method for counting totals
(regardless of treatment group) by outputting an
additional record for each record found with a “total”
treatment group (e.g. ‘Z’ in this example).
length sex $10 race $15;
/* Add total treatment group */
data hdemo;
set hdemo;
output;
group = 'Z';
output;
run;
proc sort data = hdemo;
by group patnum;
run;
/* Counts for character data */
proc freq data = hdemo noprint;
by group;
tables sex/out=sum_s;
tables race/out=sum_r;
run;
Example-5
Notice the FREQ procedure produces an output data
set for each TABLES statement. You can not produce
one output file with the counts for all character variables.
The next step would be to gather the descriptive statistics
for the numeric data (N, MEAN, STD, MIN, MAX).
Using the MEANS procedure, the code would be as
described in Example-6.
proc means data = hdemo noprint;
by group;
var age wgt hgt;
output out=sum_n;
run;
Example-6
With a bit of manipulation, you can get the data from
the output of both of these procedures into one data
structure ready for display. This would include one
record per parameter (Age, Sex, Race, Height, Weight)
per classification (Male/Female, etc.) per statistic (N,
MEAN, etc.). With the data in a standard format such as
that shown in the Sample Reporting Structure below,
the PROC REPORT code becomes fairly standard.
Variable
SRT1
CAT1
SRT2
CAT2
SRT3
CAT3
SRT4
CAT4
A_VAL
B_VAL
Z_VAL
Type
NUM
CHAR
NUM
CHAR
NUM
CHAR
NUM
CHAR
CHAR
CHAR
CHAR
Len
8
20
8
20
8
8
8
8
20
20
20
Label
SORTING FOR CAT1
DESCRIPTION 1
SORTING FOR CAT2
DESCRIPTION 2
SORTING FOR CAT3
DESCRIPTION 3
SORTING FOR CAT4
DESCRIPITION 4
VALUE FOR GROUP A
VALUE FOR GROUP B
VALUE FOR TOTAL
Sample Reporting Structure
The above structure is generic in that there are four
sorting variables (SRT1-SRT4) and four description
variables (CAT1-CAT4). Regardless of whether these
are used or not used, they are included such that the
reporting code can become fairly simple, as shown in
Example-7 and the results displayed in Output-4.
proc sort data = h_rep;
by srt1-srt4 cat1-cat4 group;
run;
title2 'Sample Demography Summary from
Denormalized Data';
proc report nowd data = h_rep missing headline
headskip split='*';
columns srt1 cat1 srt2 cat2 srt3 cat3
srt4 cat4
("-Treatment Group-"
a_val b_val z_val);
define srt1
define cat1
define srt2
define cat2
define srt3
define cat3
define srt4
define cat4
define a_val
define b_val
define z_val
/ order order=internal
noprint;
/ order width=15 "";
/ order order=internal
noprint;
/ order width=1 " ";
/ order order=internal
noprint;
/ order width=15 " ";
/ order order=internal
noprint;
/ order width=10 "Statistic";
/ display width=15 "Active"
spacing=10;
/ display width=15 "Placebo";
/ display width=15 "Total";
break after cat1 /skip;
run;
Example-7
The normalized data structure is designed in such a
way that the MEANS procedure will calculate the number
of occurrences for character data as well. The data
structure as shown above as Sample Normalized
Structure has three value fields. There is a numeric
value field, a character value field and a display value
field. When listing the data from a normalized data set, it
is helpful to have a field prepared with formatted output
specifically for that data type (e.g. LABVAL). The
display variable is created from either the numeric or
character lab value, whichever it finds or whichever is
appropriate for that test/study. For all variables with
categories, the actual category will reside in the
LABVALC and the LABNVAL will be given a value of
1 (indicating one person has this value), while the
LABVAL will simply be a copy of the LABVALC value
for display purposes. For numeric data, the LABVALC
field is left blank. The LABVAL field will contain the
formatted LABVALN to the appropriate decimal place
precision based on the data. With this structure, the
summary statistics can be prepared for character and
numeric data from the same PROC MEANS statement as
shown in Example-8. The MEANS procedure is run a
second time which counts the number of subjects in each
treatment group for each lab code at each visit. The
second MEANS statement uses the output from the first
one picking up the N statistic and summing it over all
observations for that by group. This code may need to be
modified slightly for each study/client based on the rules
for calculating denominators.
proc sort data = vdata;
by group labcode visit labvalc patnum;
run;
proc means data = vdata noprint;
by group labcode visit labvalc;
var labvaln;
output out=sum_v;
run;
/* get totals per variable for percentages */
proc means data = sum_v(where=(_STAT_ eq 'N'))
noprint;
by group labcode visit;
var labvaln;
output out=sum_t sum=tot;
run;
Example-8
Even with normalized data, the results from the
MEANS procedure are best transposed into a format that
is more easily reported (as in the Sample Reporting
Structure).
The code necessary to create sorting
variables and description variables is shown in
Example-9 pulling together the output from both of the
MEANS procedures first. The data are then sorted by
these newly created variables (SRT1-SRT4 and CAT1CAT4) and the GROUP variable in order to transpose the
data one more time to create values per treatment group.
We consider the “Total” as a different treatment group,
when actually this data came from the individual
treatment groups.
The resulting data structure is identical to that found in
Sample Reporting Structure and ready for the PROC
REPORT code found in Example-7. The SRT2 and
CAT2 variables are not used in this example with lab
data, but if the summarization was slightly different, this
layout would allow some flexibility with only minor
changes to the PROC REPORT code that creates the
summary.
data v_rep(keep=group srt1-srt4
cat1-cat4 value);
merge sum_v(drop=_TYPE_ _FREQ_
rename=(_STAT_=cat4))
sum_t(keep=group labcode visit tot);
by group labcode visit;
length cat1-cat3 $20 value $15;
retain srt3 srt4 0;
cat1
srt1
cat2
srt2
cat3
srt3
=
=
=
=
=
=
put(labcode,labcods.);
labcode;
' ';
.;
put(visit,visit.);
visit;
if first.visit then srt4 = 1;
else srt4 + 1;
select(cat4);
when('N') do;
srt4 = 1;
if (cat3 ne ' ') then
value = put(labvaln,4.0) || ' (' ||
put(round(((labvaln/tot)*100),.1),5.1)
|| '%)';
else value = put(labvaln,4.0);
end;
when('MEAN') do;
srt4 = 2;
value = put(labvaln,7.2);
end;
when('STD') do;
srt4 = 3;
value = put(labvaln,7.2);
end;
when('MIN') do;
srt4 = 4;
value = put(labvaln,6.1);
end;
when('MAX') do;
srt4 = 5;
value = put(labvaln,6.1);
end;
otherwise put 'CAT4: ' cat4=;
end;
run;
proc sort data = v_rep;
by srt1-srt4 cat1-cat4 group;
run;
data t_rep(drop=value);
set v_rep;
by srt1-srt4 cat1-cat4 group;
length a_val b_val z_val $15;
retain a_val b_val z_val;
select(group);
when('A') a_val = value;
when('B') b_val = value;
when('Z') z_val = value;
otherwise /* do nothing */ ;
end;
if last.cat4 then do;
output;
a_val = ' ';
b_val = ' ';
z_val = ' ';
end;
run;
Example-9
The results of the report code (from Example-7) with
the data prepared in Example-9 are shown in Output-5.
FLEXIBILITY
With the normalized data structure, quite a bit of the
code from one program can be reused for many other
programs. This advantage lends itself to macro programs
to be written using macro parameters to pass in the
changing data items. The laboratory summary program
described above is quite similar to summarizing the
demographic data when using a normalized data structure.
Shown below in Example-10 is the code necessary to
summarize the normalized demographic data (VDEMO).
proc sort data = vdemo;
by group var valc patnum;
run;
proc means data = vdemo noprint;
by group var valc;
var valn;
output out=sum_v;
run;
data sum_v;
set sum_v(drop=_TYPE_ _FREQ_);
by group var;
if (valc ne ' ') and (_STAT_ ne 'N') then
delete; /* remove extra stats */
run;
/* get totals per variable for percentages */
proc means data = sum_v(where=(_STAT_ eq 'N'))
noprint;
by group var;
var valn;
output out=sum_t sum=tot;
run;
Example-10
In the above code, the data are summarized in a
similar fashion with slightly different variable names.
We could have easily renamed the lab variables to be
consistent with these variable names. The output data
files from the summarization steps are identical to those
created in Example-8 above. The code necessary to
transpose this data into the Sample Reporting Structure
is very similar to the code in Example-9, but is shown
below in Example-11. The resulting output found in
Output-6 is identical to that of Output-4 for
demographic data. The difference here is that VERY
similar code between data types was used to prepare the
output making new programs more easily written.
data v_rep(keep=group srt1-srt4 cat1-cat4
value);
merge sum_v(rename=(valc=cat3 _STAT_=cat4))
sum_t(keep=group var tot);
by group var;
data structure as your standard. This design provides for
flexibility and makes standard programs more robust.
The earlier on in the data process where the data can be
normalized, the analysis process benefits are greater.
length cat1-cat2 $20 value $15;
retain srt2 srt3 0;
cat1 = put(var,varcode.);
srt1 = var;
if first.var then srt4 = 1;
else srt4 + 1;
select(cat4);
when('N') do;
srt4 = 1;
if (cat3 ne ' ') then
value = put(valn,4.0) || ' (' ||
put(round(((valn/tot)*100),.1),5.1)
|| ‘%)';
else value = put(valn,4.0);
end;
when('MEAN') do;
srt4 = 2;
value = put(valn,7.2);
end;
when('STD') do;
srt4 = 3;
value = put(valn,7.2);
end;
when('MIN') do;
srt4 = 4;
value = put(valn,6.1);
end;
when('MAX') do;
srt4 = 5;
value = put(valn,6.1);
end;
otherwise put 'CAT4: ' cat4=;
end;
run;
Example-11
Now you have seen different types of data in
normalized structures summarized in a fairly consistent
fashion. The other key advantage to this data structure is
the flexibility encapsulated when more or different data
arrives. For example, say the lab tests for a new study are
entirely different. It does NOT make any difference to
the program if there are 4 unique lab variables or 40. Not
to mention the fact that if you use the same variable
decodes across studies (e.g. LABCODE decodes using
LABCODS. format or VAR decodes using VARCODE.)
within the identical normalized structure, then the
program does not have to change from study to study or
client to client. This supports the concept of moving your
summarization routine into macros and calling them with
parameters passing in the “unique to this study”
information.
CONCLUSION
Given the option of a horizontal versus a vertical data
structure to be used during the analysis phase of clinical
trials, there are many reasons to choose the vertical
structure. If your company has not gone to “standards” at
this point, it might be worth looking into a normalized
REFERENCES
SAS Guide to the Report Procedure, Reference, Release
6.11
SAS Procedures Guide, Version 6, Third Edition
SAS is a registered trademark of the SAS Institute Inc.,
Cary, NC, USA.
ACKNOWLEDGEMENTS
I would like to thank my old department at IBAH,
Inc. who showed me many ways to handle difficult data.
I would also like to thank my colleagues at Synteract, Inc.
for the successful implementation (and documentation) of
normalized structures in their programming efforts.
AUTHORS
The author of this paper can be contacted as follows:
Daphne Ewing, Synteract, Inc.
Voice: (215) 283-9370
FAX: (215) 283-9366
EMS: [email protected]
Normalized Data Paper
Sample Horizontal Demography Listing
09:34 Wednesday, March 18, 1998
1
Patient
Treatment Group Number
Age (yrs)
Sex
Race
Height (in)
Weight (kg)
---------------------------------------------------------------------------------------------------------------Active
A-001
A-002
A-005
A-011
A-013
A-015
A-021
A-023
A-025
70
48
61
66
57
70
66
70
68
Male
Male
Female
Male
Male
Male
Male
Male
Male
Caucasian
Black
Caucasian
Caucasian
Caucasian
Caucasian
Caucasian
Caucasian
Caucasian
71.00
73.00
65.00
68.50
73.00
70.00
72.00
69.50
69.00
77.20
79.50
73.10
94.20
90.90
89.50
86.30
90.90
89.50
Placebo
A-003
. . .
58
Male
Caucasian
72.50
85.60
Output-1
Normalized Data Paper
Sample Vertical Demography Listing
09:34 Wednesday, March 18, 1998
Patient
Age (yrs)
Sex
Race
Height (in)
Weight (kg)
Treatment Group Number
-----------------------------------------------------------------------------------------------------------Active
A-001
A-002
A-005
A-011
A-013
A-015
A-021
A-023
A-025
70
48
61
66
57
70
66
70
68
Male
Male
Female
Male
Male
Male
Male
Male
Male
Caucasian
Black
Caucasian
Caucasian
Caucasian
Caucasian
Caucasian
Caucasian
Caucasian
71.00
73.00
65.00
68.50
73.00
70.00
72.00
69.50
69.00
77.20
79.50
73.10
94.20
90.90
89.50
86.30
90.90
89.50
Placebo
A-003
. . .
58
Male
Caucasian
72.50
85.60
Output-2
1
Normalized Data Paper
Sample Vertical Laboratory Listing
13:06 Wednesday, March 18, 1998
------------------------Laboratory Test--------------------------Patient
ALT/SGPT
AST/SGOT
Hematocrit
Hemoglobin
Treatment Group Number
Visit
Result
Result
Result
Result
----------------------------------------------------------------------------------------------------------Active
A-001
A-002
A-005
A-011
A-013
A-015
A-021
A-023
A-025
Placebo
A-003
Screening
Baseline
Follow-up
Screening
Baseline
Follow-up
Screening
Baseline
Follow-up
Screening
Baseline
Follow-up
Screening
Baseline
Follow-up
Screening
Baseline
Follow-up
Screening
Baseline
Follow-up
Screening
Baseline
Follow-up
Screening
Baseline
Follow-up
13
10
12
12
11
17
20
15
21
18
21
19
24
21
13
13
14
17
18
22
19
17
17
20
19
23
24
20
20
23
28
26
22
24
20
18
18
17
16
17
14.8
14.3
14.1
15.4
13.1
13.9
14.4
13.2
13.0
13.8
14.1
12.9
14.2
13.5
13.7
14.9
14.1
14.2
13.6
14.0
13.4
14.1
14.0
15.3
15.0
13.1
14.3
43.3
41.5
40.6
45.3
37.5
39.5
41.9
38.4
38.9
39.0
40.2
36.5
41.3
39.3
38.9
43.1
39.9
41.0
39.0
39.1
37.9
40.6
40.1
43.3
42.9
38.0
42.5
19
19
22
35
21
37
24
22
21
18
17
17
Screening
Baseline
Follow-up
16
15
16
19
18
18
13.0
12.7
12.9
37.8
36.5
38.7
Output-3
1
Normalized Data Paper
09:34 Wednesday, March 18, 1998
Sample Demography Summary from Denormalized Data
2
-----------------Treatment Group----------------Statistic
Active
Placebo
Total
---------------------------------------------------------------------------------------------------------Age (yrs)
N
MEAN
STD
MIN
MAX
9
64.00
7.47
48.0
70.0
9
61.89
5.84
51.0
68.0
18
62.94
6.59
48.0
70.0
Sex
Female
Male
N
N
1 ( 11.1%)
8 ( 88.9%)
1 ( 11.1%)
8 ( 88.9%)
2 ( 11.1%)
16 ( 88.9%)
Race
Black
Caucasian
N
N
1 ( 11.1%)
8 ( 88.9%)
1 ( 11.1%)
8 ( 88.9%)
2 ( 11.1%)
16 ( 88.9%)
Height (in)
N
MEAN
STD
MIN
MAX
9
70.11
2.53
65.0
73.0
9
69.61
2.32
66.0
72.5
18
69.86
2.37
65.0
73.0
. . .
Output-4
Normalized Data Paper
Sample Laboratory Summary from Normalized Data
09:34 Wednesday, March 18, 1998
-----------------Treatment Group----------------Lab Test
Visit
Statistic
Active
Placebo
Total
-------------------------------------------------------------------------------------------------Hemoglobin
Screening
Baseline
N
MEAN
STD
MIN
MAX
N
MEAN
STD
MIN
MAX
9 (100.0%)
41.82
2.08
39.0
45.3
9 (100.0%)
39.33
1.25
37.5
41.5
. . .
Output-5
9 (100.0%)
42.23
3.47
37.7
46.9
9 (100.0%)
40.38
3.16
36.5
45.8
18 (100.0%)
42.03
2.78
37.7
46.9
18 (100.0%)
39.86
2.39
36.5
45.8
1
Normalized Data Paper
Sample Demography Summary from Normalized Data
09:34 Wednesday, March 18, 1998
-----------------Treatment Group----------------Statistic
Active
Placebo
Total
---------------------------------------------------------------------------------------------------------Age (yrs)
N
MEAN
STD
MIN
MAX
9
64.00
7.47
48.0
70.0
9
61.89
5.84
51.0
68.0
18
62.94
6.59
48.0
70.0
Sex
Female
Male
N
N
1 ( 11.1%)
8 ( 88.9%)
1 ( 11.1%)
8 ( 88.9%)
2 ( 11.1%)
16 ( 88.9%)
Race
Black
Caucasian
N
N
1 ( 11.1%)
8 ( 88.9%)
1 ( 11.1%)
8 ( 88.9%)
2 ( 11.1%)
16 ( 88.9%)
Height (in)
N
MEAN
STD
MIN
MAX
9
70.11
2.53
65.0
73.0
9
69.61
2.32
66.0
72.5
18
69.86
2.37
65.0
73.0
Weight (kg)
N
MEAN
STD
MIN
MAX
9
85.68
7.29
73.1
94.2
9
88.28
9.90
72.0
99.8
18
86.98
8.54
72.0
99.8
Output-6
3