Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
There’s No Such Thing as Normal Clinical Trials Data, or Is There? Daphne Ewing, Synteract, Inc., Glenside, Pennsylvania denormalized data set, there is a variable for each data point (e.g. AGE, SEX, RACE, etc.). This file structure is 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. Variable PATID VISIT DTCOLL TMCOLL HGB HCT RBC WBC DATA LISTINGS 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. 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. STUDY, CENTER, PATID, 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. Len 12 8 8 8 8 20 8 20 Label PATIENT NUMBER VISIT DATE SAMPLE COLLECTED TIME SAMPLE COLLECTED HEMOGLOBIN HEMATOCRIT RED BLOOD CELLS WHITE BLOOD CELLS 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? NORMALIZATION Type CHAR NUM NUM NUM NUM CHAR NUM CHAR Len 12 8 8 8 8 8 8 8 Sample Denormalized Structure 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. Variable PATID VISIT DTCOLL TMCOLL LABCODE LABVALC LABVALN LABVAL Type CHAR NUM NUM NUM NUM NUM NUM NUM 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; Label PATIENT NUMBER VISIT DATE SAMPLE COLLECTED TIME SAMPLE COLLECTED LAB TEST CODE CHARACTER LAB VALUE NUMERIC LAB VALUE DISPLAY VALUE 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)'; 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 break after group /skip; run; 1 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. The vertical data structure can be more easily reported using the ACROSS variable definition within PROC REPORT. Using the normalized laboratory data, the 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)); Proc format; value varcode 1 = 'Age (yrs)' 2 = 'Sex' 3 = 'Race' 4 = 'Height (in)' 5 = 'Weight (kg)'; run; /* 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; proc sort data = vdemo(keep=var) out=lbl nodupkey; by var; run; if inlab and intrt; 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; 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 Example-2 define 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. 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 proc transpose data = vdemo out=demo prefix=col; by patnum group; var val; run; 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. 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"; 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, break after group /skip; run; Example-3 2 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). a vertical structure lends itself to using macros, macro variables and pre-defined programs. 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). If 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. length sex $10 race $15; /* reset Sex and Race to text */ sex = put(sexc,$sexs.); if (race eq 'O') then race = otspec; else race = put(racec,$races.); run; /* Add total treatment group */ data hdemo; set hdemo; 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. 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; 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. 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. 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. 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 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 3 that shown in the Sample Reporting Structure below, the PROC REPORT code becomes fairly standard. 4 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. 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. There is a second MEANS produced 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 = h_rep; by srt1-srt4 cat1-cat4 group; run; proc sort data = vdata; by group labcode visit labvalc patnum; 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); proc means data = vdata noprint; by group labcode visit labvalc; var labvaln; output out=sum_v; run; 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 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 /* 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; / 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"; 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. 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 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. 5 The results of the report code (from Example-7) with the data prepared in Example-9 are shown in Output-5. 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 = = = = = = 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). 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; 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 run; 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. 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 6 at this point, it might be worth looking into a normalized 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. 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; length cat1-cat2 $20 value $15; retain srt2 srt3 0; cat1 = put(var,varcode.); srt1 = var; REFERENCES SAS Guide to the Report Procedure, Reference, Release 6.11 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; 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: run; Example-11 Daphne Ewing, Synteract, Inc. Voice: (215) 836-4430 FAX: (215) 836-4425 EMS: [email protected] 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” 7 Normalized Data Paper Sample Horizontal Demography Listing 09:34 Wedn Patient Treatment Group Number Age (yrs) Sex Race Height ------------------------------------------------------------------------------------------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 7 7 6 6 7 7 7 6 6 Placebo A-003 A-004 A-006 A-012 A-014 A-016 A-022 A-024 A-026 58 51 63 57 68 67 60 68 65 Male Male Male Male Male Female Male Male Male Caucasian Caucasian Black Caucasian Caucasian Caucasian Caucasian Caucasian Caucasian 7 6 7 7 7 6 6 6 7 Output-1 8 Normalized Data Paper Sample Vertical Demography Listing 09:34 Wedn Patient Age (yrs) Sex Race Height (in) 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 Placebo A-003 A-004 A-006 A-012 A-014 A-016 A-022 A-024 A-026 58 51 63 57 68 67 60 68 65 Male Male Male Male Male Female Male Male Male Caucasian Caucasian Black Caucasian Caucasian Caucasian Caucasian Caucasian Caucasian 72.50 67.00 72.00 72.00 70.00 66.00 69.00 68.00 70.00 Output-2 9 Normalized Data Paper Sample Vertical Laboratory Listing 13:06 Wedn ------------------------Laboratory Test--------Patient ALT/SGPT AST/SGOT Hematocrit Treatment Group Number Visit 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 19 19 22 35 21 37 24 22 21 18 17 17 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 Screening Baseline Follow-up 16 15 16 19 18 18 13.0 12.7 12.9 Output-3 10 Normalized Data Paper 09:34 Wedn Sample Demography Summary from Denormalized Data -----------------Treatment Group Statistic Active Placebo ---------------------------------------------------------------------------------------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 Sex Female Male N N 1 ( 11.1%) 8 ( 88.9%) 1 ( 11.1%) 8 ( 88.9%) Race Black Caucasian N N 1 ( 11.1%) 8 ( 88.9%) 1 ( 11.1%) 8 ( 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 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 Output-4 11 Normalized Data Paper Sample Laboratory Summary from Normalized Data 09:34 Wedn -----------------Treatment Group--Lab Test Visit Statistic Active Placebo T -----------------------------------------------------------------------------------Hemoglobin Screening Baseline Follow-up Hematocrit Screening Baseline Follow-up N MEAN STD MIN MAX 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 9 (100.0%) 39.90 2.17 36.5 43.3 9 (100.0%) 42.23 3.47 37.7 46.9 9 (100.0%) 40.38 3.16 36.5 45.8 9 (100.0%) 41.02 3.56 35.8 47.2 N MEAN STD MIN MAX N MEAN STD MIN MAX N MEAN STD MIN MAX 9 (100.0%) 14.47 0.60 13.6 15.4 9 (100.0%) 13.71 0.48 13.1 14.3 9 (100.0%) 13.87 0.74 12.9 15.3 9 (100.0%) 14.47 1.20 12.8 16.1 9 (100.0%) 13.94 1.07 12.7 15.7 9 (100.0%) 14.02 1.28 12.2 16.1 Output-5 12 Normalized Data Paper Sample Laboratory Summary from Normalized Data 09:34 Wedn -----------------Treatment Group--Lab Test Visit Statistic Active Placebo T -----------------------------------------------------------------------------------AST/SGOT Screening Baseline Follow-up ALT/SGPT Screening Baseline Follow-up N MEAN STD MIN MAX N MEAN STD MIN MAX N MEAN STD MIN MAX 9 (100.0%) 19.56 3.84 13.0 26.0 9 (100.0%) 18.44 3.05 13.0 23.0 8 (100.0%) 20.38 4.63 14.0 28.0 9 (100.0%) 23.56 8.06 18.0 43.0 9 (100.0%) 23.44 6.21 18.0 35.0 9 (100.0%) 22.11 7.70 14.0 40.0 N MEAN STD MIN MAX N MEAN STD MIN MAX N MEAN STD MIN MAX 9 (100.0%) 20.33 6.87 12.0 35.0 9 (100.0%) 17.44 4.53 10.0 22.0 8 (100.0%) 20.75 7.30 12.0 37.0 9 (100.0%) 26.44 13.48 16.0 55.0 9 (100.0%) 23.67 9.62 14.0 40.0 9 (100.0%) 25.67 13.96 13.0 50.0 Output-5 (cont.) 13 Normalized Data Paper Sample Demography Summary from Normalized Data 09:34 Wedn -----------------Treatment Group Statistic Active Placebo ---------------------------------------------------------------------------------------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 Sex Female Male N N 1 ( 11.1%) 8 ( 88.9%) 1 ( 11.1%) 8 ( 88.9%) Race Black Caucasian N N 1 ( 11.1%) 8 ( 88.9%) 1 ( 11.1%) 8 ( 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 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 Output-6 14