Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Added groupingDataset (GitHub #187) and order for operation (GitHub#200), renamed label to name for grouping factors and groups (GitHub #217)

This example shows a selection of programming code document references specified in the documentRef attribute of the codeTemplate for 1 analysis method, and the programmingCode for 1 analysis and 2 outputs:the definition and results for a single analysis, "Summary of Subjects by Treatment and Sex", including the definitions of the grouping factors and method referenced by the analysis. This example illustrates the use of the groupingId and groupId attributes of the ResultGroup class to associate results with groups in results-by-group grouping factors with predefined groups.

Xfancyxfancy
classrowcaps
Lines 21-733:

Show the code template specified for the "Analysis of variance group comparison for a continuous variable" analysis method, which indicates that relevant R version 4.2.3 program statements can be found in the reference document identified as "anova_R". As there is no page reference, this indicates that the whole reference document contains relevant program statements.

Lines 11-25:

Show the programming code specification for the "Comparison of Age Group by Treatment" analysis, which indicates that relevant SAS version 9.4 program statements can be found in the reference document identified as "PROGRAM_CATALOG_SAS" which, in this example, is a single file containing a combined set of programs, with a bookmark created for each program. The sponsor chose to create two separate page references in order to provide a descriptive label for each.

Lines 29-34:

Show the programming code specification for the "Summary of TEAE by System Organ Class and Preferred Term" output, which indicates that relevant SAS version 9.4 program statements can be found in the reference document identified as "at14-5-01_sas". As there is no page reference, this indicates that the whole reference document contains relevant program statements.

definitions of the 2 grouping factors referenced by the analysis, both of which are not data-driven (dataDriven = false, shown on lines 6 and 24):

  • Lines 2-19: Show the definition of the "Treatment" grouping factor, which has 3 groups: "Placebo", "Xanomeline Low Dose", and "Xanomeline High Dose".
  • Lines 20-33: Show the definition of the "Sex" grouping factor, which has 2 groups: "Male" and "Female".
Lines 34-48:

Show the definition of the method referenced by the analysis, "Summary by group of a categorical variable", which has 2 operations:

  • Lines 38-42: Show the definition of the "Count of subjects" operation.
  • Lines 43-47: Show the definition of the "Percent of subjects" operation.
Lines 49-62:

Show the definition of the analysis:

  • Lines 53-54: Show that this is an analysis of the USUBJID variable in the ADSL dataset.
  • Line 55: Shows the reference to the "Summary by group of a categorical variable" method.
  • Lines 56-62: Show the references to the 2 grouping factors, both of which are marked as producing a result for each group in the grouping factor (resultsByGroup = true, shown on lines 58 and 61).
Lines 63-161

Show the list of results for the analysis. Each entry in the list (starting with the operationId attribute preceded by a hyphen) represents an instance of the OperationResult class and contains:

  • The identifier value of the statistical operation performed, which is in the operationId attribute.
  • In the resultGroups attribute, a reference to both grouping factor groups associated with the result (indicated by the values of the groupingId and groupId attributes)
  • The raw result value in the rawValue attribute, and
  • In the formattedValue attribute, the result value formatted according to the pattern specified in the resultPattern attribute of the operation referenced by the operationId value. The specified patterns are shown on rows 42 and 47.
Code Block
titleYAML Example
linenumberstrue
analysisGroupings:
- id: AnlsGrouping_01_Trt
  name: Treatment
  groupingDataset: ADSL
  groupingVariable: TRT01A
  dataDriven: false
  groups:
  - id: AnlsGrouping_01_Trt_1
    name: Placebo
    order: 1
    ...
  - id: AnlsGrouping_01_Trt_2
    name: Xanomeline Low Dose
    order: 2 
    ...
  - id: AnlsGrouping_01_Trt_3
    name: Xanomeline High Dose
    order: 3 
    ...
- id: AnlsGrouping_02_Sex
  name: Sex
  groupingDataset: ADSL
  groupingVariable: SEX
  dataDriven: false
  groups:
  - id: AnlsGrouping_02_Sex_1
    name: Male
    order: 1
    ...
  - id: AnlsGrouping_02_Sex_2
    name: Female
    order: 2
    ...
Code Block
titleYAML Example
linenumberstrue
methods:
- id: Mth01_CatVar_Summ_ByGrp
  name: Summary by group of a categorical variable
  operations:
  - id: Mth01_CatVar_Summ_ByGrp_1_n
    name: Count of subjects
    label: n
    order: 1
    resultPattern: XXX
  - id: Mth01_CatVar_Summ_ByGrp_2_pct
    name: Percent of subjects
    label: '%'
    order: 2 
    resultPattern: ( XX.X)
    ...
  ...
analyses:
- id: An03_03_Sex_Summ_ByTrt
    name: Summary of Subjects by Treatment and Sex
  version: 1
  dataset: ADSL
  methodIdvariable: Mth01_CatVar_Summ_ByGrpUSUBJID
  analysisSetIdmethodId: AnalysisSetMth01_CatVar_02Summ_SAFByGrp
  orderedGroupings:
  - order: 1
    resultsByGroup: true
    groupingId: AnlsGrouping_01_Trt
  - order: 2
    resultsByGroup: true
    groupingId: AnlsGrouping_02_Sex
  results:
  - operationId: Mth01_CatVar_Summ_ByGrp_1_n
    resultGroups:
    - groupingId: AnlsGrouping_01_Trt
      groupId: AnlsGrouping_01_Trt_1
    - groupingId: AnlsGrouping_02_Sex
      groupId: AnlsGrouping_02_Sex_1
    rawValue: '33'
    formattedValue: '33'
  - operationId: Mth01_CatVar_Summ_ByGrp_1_n
    resultGroups:
    - groupingId: AnlsGrouping_01_Trt
      groupId: AnlsGrouping_01_Trt_1
    - groupingId: AnlsGrouping_02_Sex
      groupId: AnlsGrouping_02_Sex_2
    rawValue: '53'
    formattedValue: '53'
  - operationId: Mth01_CatVar_Summ_ByGrp_1_n
    resultGroups:
    - groupingId: AnlsGrouping_01_Trt
      groupId: AnlsGrouping_01_Trt_2
    - groupingId: AnlsGrouping_02_Sex
      groupId: AnlsGrouping_02_Sex_1
    rawValue: '34'
    formattedValue: '34'
  - operationId: Mth01_CatVar_Summ_ByGrp_1_n
    resultGroups:
    - groupingId: AnlsGrouping_01_Trt
      groupId: AnlsGrouping_01_Trt_2
    - groupingId: AnlsGrouping_02_Sex
      groupId: AnlsGrouping_02_Sex_2
    rawValue: '50'
    formattedValue: '50'
  - operationId: Mth01_CatVar_Summ_ByGrp_1_n
    resultGroups:
    - groupingId: AnlsGrouping_01_Trt
      groupId: AnlsGrouping_01_Trt_3
    - groupingId: AnlsGrouping_02_Sex
      groupId: AnlsGrouping_02_Sex_1
    rawValue: '44'
    formattedValue: '44'
  - operationId: Mth01_CatVar_Summ_ByGrp_1_n
    resultGroups:
    - groupingId: AnlsGrouping_01_Trt
      groupId: AnlsGrouping_01_Trt_3
    - groupingId: AnlsGrouping_02_Sex
      groupId: AnlsGrouping_02_Sex_2
    rawValue: '40'
    formattedValue: '40'
  - operationId: Mth01_CatVar_Summ_ByGrp_2_pct
    resultGroups:
    - groupingId: AnlsGrouping_01_Trt
      groupId: AnlsGrouping_01_Trt_1
    - groupingId: AnlsGrouping_02_Sex
      groupId: AnlsGrouping_02_Sex_1
    rawValue: '38.372093023255815'
    formattedValue: ( 38.4)
  - operationId: Mth01_CatVar_Summ_ByGrp_2_pct
    resultGroups:
    - groupingId: AnlsGrouping_01_Trt
      groupId: AnlsGrouping_01_Trt_1
    - groupingId: AnlsGrouping_02_Sex
      groupId: AnlsGrouping_02_Sex_2
    rawValue: '61.627906976744185'
    formattedValue: ( 61.6)
  - operationId: Mth01_CatVar_Summ_ByGrp_2_pct
    resultGroups:
    - groupingId: AnlsGrouping_01_Trt
      groupId: AnlsGrouping_01_Trt_2
    - groupingId: AnlsGrouping_02_Sex
      groupId: AnlsGrouping_02_Sex_1
    rawValue: '40.476190476190474'
    formattedValue: ( 40.5)
  - operationId: Mth01_CatVar_Summ_ByGrp_2_pct
    resultGroups:
    - groupingId: AnlsGrouping_01_Trt
      groupId: AnlsGrouping_01_Trt_2
    - groupingId: AnlsGrouping_02_Sex
      groupId: AnlsGrouping_02_Sex_2
    rawValue: '59.523809523809526'
    formattedValue: ( 59.5)
  - operationId: Mth01_CatVar_Summ_ByGrp_2_pct
    resultGroups:
    - groupingId: AnlsGrouping_01_Trt
      groupId: AnlsGrouping_01_Trt_3
    - groupingId: AnlsGrouping_02_Sex
      groupId: AnlsGrouping_02_Sex_1
    rawValue: '52.38095238095238'
    formattedValue: ( 52.4)
  - operationId: Mth01_CatVar_Summ_ByGrp_2_pct
    resultGroups:
    - groupingId: AnlsGrouping_01_Trt
      groupId: AnlsGrouping_01_Trt_3
    - groupingId: AnlsGrouping_02_Sex
      groupId: AnlsGrouping_02_Sex_2
    rawValue: '47.61904761904762'
    formattedValue: ( 47.6)
  ...
 ...

The results for this analysis could be represented in tabular format as shown in the following table, where the value of the id attribute of the analysis is shown in the "analysisId" column and the groupingId and groupId values from the 2 two instances of the ResultGroup class found in the resultGroups attribute for each each result are represented in separate pairs of columns ("resultGroup1_groupingIdgroupingId1"/"resultGroup1_groupIdgroupId1" and "resultGroup2_groupingIdgroupingId2"/"resultGroup2_groupIdgroupId2") so that each result is represented on a single row:

Dataset2
analysisIdoperationIdresultGroup1_groupingIdresultGroup1_groupIdresultGroup2_groupingIdgroupingId1groupId1groupingId2groupId2resultGroup2_groupIdrawValueformattedValue
An03_03_Sex_Summ_ByTrtMth01_CatVar_Summ_ByGrp_1_nAnlsGrouping_01_TrtAnlsGrouping_01_Trt_1AnlsGrouping_02_SexAnlsGrouping_02_Sex_13333
An03_03_Sex_Summ_ByTrtMth01_CatVar_Summ_ByGrp_1_nAnlsGrouping_01_TrtAnlsGrouping_01_Trt_1AnlsGrouping_02_SexAnlsGrouping_02_Sex_25353
An03_03_Sex_Summ_ByTrtMth01_CatVar_Summ_ByGrp_1_nAnlsGrouping_01_TrtAnlsGrouping_01_Trt_2AnlsGrouping_02_SexAnlsGrouping_02_Sex_13434
An03_03_Sex_Summ_ByTrtMth01_CatVar_Summ_ByGrp_1_nAnlsGrouping_01_TrtAnlsGrouping_01_Trt_2AnlsGrouping_02_SexAnlsGrouping_02_Sex_25050
An03_03_Sex_Summ_ByTrtMth01_CatVar_Summ_ByGrp_1_nAnlsGrouping_01_TrtAnlsGrouping_01_Trt_3AnlsGrouping_02_SexAnlsGrouping_02_Sex_14444
An03_03_Sex_Summ_ByTrtMth01_CatVar_Summ_ByGrp_1_nAnlsGrouping_01_TrtAnlsGrouping_01_Trt_3AnlsGrouping_02_SexAnlsGrouping_02_Sex_24040
An03_03_Sex_Summ_ByTrtMth01_CatVar_Summ_ByGrp_2_pctAnlsGrouping_01_TrtAnlsGrouping_01_Trt_1AnlsGrouping_02_SexAnlsGrouping_02_Sex_138.3720930232558( 38.4)
An03_03_Sex_Summ_ByTrtMth01_CatVar_Summ_ByGrp_2_pctAnlsGrouping_01_TrtAnlsGrouping_01_Trt_1AnlsGrouping_02_SexAnlsGrouping_02_Sex_261.6279069767442( 61.6)
An03_03_Sex_Summ_ByTrtMth01_CatVar_Summ_ByGrp_2_pctAnlsGrouping_01_TrtAnlsGrouping_01_Trt_2AnlsGrouping_02_SexAnlsGrouping_02_Sex_140.4761904761905( 40.5)
An03_03_Sex_Summ_ByTrtMth01_CatVar_Summ_ByGrp_2_pctAnlsGrouping_01_TrtAnlsGrouping_01_Trt_2AnlsGrouping_02_SexAnlsGrouping_02_Sex_259.5238095238095( 59.5)59.5)
An03_03_Sex_Summ_ByTrtMth01_CatVar_Summ_ByGrp_2_pctAnlsGrouping_01_TrtAnlsGrouping_01_Trt_3AnlsGrouping_02_SexAnlsGrouping_02_Sex_152.3809523809524( 52.4)
An03_03_Sex_Summ_ByTrtMth01_CatVar_Summ_ByGrp_2_pctAnlsGrouping_01_TrtAnlsGrouping_01_Trt_3AnlsGrouping_02_SexAnlsGrouping_02_Sex_247.6190476190476( 47.6)

Alternatively, to aid readability, each of the identifier values could be used to retrieve and include additional the name or label (or any other descriptive information) from the definitions of the operations, grouping factors, and groups:

Dataset2
analysisIdoperationIdoperation_labelresultGroup1_groupingIdgroupingId1resultGroup1_grouping_labelname1resultGroup1_groupIdgroupId1resultGroup1_group_labelname1resultGroup2_groupingIdgroupingId2resultGroup2_grouping_labelname2resultGroup2_groupIdgroupId2resultGroup2_group_labelname2rawValueformattedValue
An03_03_Sex_Summ_ByTrtMth01_CatVar_Summ_ByGrp_1_nnAnlsGrouping_01_TrtTreatmentAnlsGrouping_01_Trt_1PlaceboAnlsGrouping_02_SexSexAnlsGrouping_02_Sex_1Male3333
An03_03_Sex_Summ_ByTrtMth01_CatVar_Summ_ByGrp_1_nnAnlsGrouping_01_TrtTreatmentAnlsGrouping_01_Trt_1PlaceboAnlsGrouping_02_SexSexAnlsGrouping_02_Sex_2Female5353
An03_03_Sex_Summ_ByTrtMth01_CatVar_Summ_ByGrp_1_nnAnlsGrouping_01_TrtTreatmentAnlsGrouping_01_Trt_2Xanomeline Low DoseAnlsGrouping_02_SexSexAnlsGrouping_02_Sex_1Male3434
An03_03_Sex_Summ_ByTrtMth01_CatVar_Summ_ByGrp_1_nnAnlsGrouping_01_TrtTreatmentAnlsGrouping_01_Trt_2Xanomeline Low DoseAnlsGrouping_02_SexSexAnlsGrouping_02_Sex_2Female5050
An03_03_Sex_Summ_ByTrtMth01_CatVar_Summ_ByGrp_1_nnAnlsGrouping_01_TrtTreatmentAnlsGrouping_01_Trt_3Xanomeline High DoseAnlsGrouping_02_SexSexAnlsGrouping_02_Sex_1Male444444
An03_03_Sex_Summ_ByTrtMth01_CatVar_Summ_ByGrp_1_nnAnlsGrouping_01_TrtTreatmentAnlsGrouping_01_Trt_3Xanomeline High DoseAnlsGrouping_02_SexSexAnlsGrouping_02_Sex_2Female4040
An03_03_Sex_Summ_ByTrtMth01_CatVar_Summ_ByGrp_2_pct%AnlsGrouping_01_TrtTreatmentAnlsGrouping_01_Trt_1PlaceboAnlsGrouping_02_SexSexAnlsGrouping_02_Sex_1Male38.3720930232558( 38.4)
An03_03_Sex_Summ_ByTrtMth01_CatVar_Summ_ByGrp_2_pct%AnlsGrouping_01_TrtTreatmentAnlsGrouping_01_Trt_1PlaceboAnlsGrouping_02_SexSexAnlsGrouping_02_Sex_2Female61.6279069767442( 61.6)
An03_03_Sex_Summ_ByTrtMth01_CatVar_Summ_ByGrp_2_pct%AnlsGrouping_01_TrtTreatmentAnlsGrouping_01_Trt_2Xanomeline Low DoseAnlsGrouping_02_SexSexAnlsGrouping_02_Sex_1Male40.4761904761905( 40.5)
An03_03_Sex_Summ_ByTrtMth01_CatVar_Summ_ByGrp_2_pct%AnlsGrouping_01_TrtTreatmentAnlsGrouping_01_Trt_2Xanomeline Low DoseAnlsGrouping_02_SexSexAnlsGrouping_02_Sex_2Female59.5238095238095( 59.5)
An03_03_Sex_Summ_ByTrtMth01_CatVar_Summ_ByGrp_2_pct%AnlsGrouping_01_TrtTreatmentAnlsGrouping_01_Trt_3Xanomeline High DoseAnlsGrouping_02_SexSexAnlsGrouping_02_Sex_1Male52.3809523809524( 52.4)
An03_03_Sex_Summ_ByTrtMth01_CatVar_Summ_ByGrp_2_pct%AnlsGrouping_01_TrtTreatmentAnlsGrouping_01_Trt_3Xanomeline High DoseAnlsGrouping_02_SexSexAnlsGrouping_02_Sex_2Female47.6190476190476( 47.6)