{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://schema.rtemis.org/classificationmetricsres/v1/schema.json",
  "title": "rtemis ClassificationMetricsRes",
  "description": "Classification metrics aggregated across resamples: each resample's metrics, the aggregate confusion matrix in long form, and the mean and standard deviation of the overall metrics.",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "sample": {
      "type": ["string", "null"],
      "enum": [
        "Training",
        "Validation",
        "Test",
        "Calibrated Training",
        "Calibrated Validation",
        "Calibrated Test",
        null
      ],
      "description": "Sample the metrics describe.",
      "readOnly": true,
      "x-rtemis": {
        "type": "string",
        "role": "state"
      }
    },
    "confusion_long": {
      "type": ["array", "null"],
      "items": {
        "type": "object",
        "properties": {
          "reference": {
            "type": "string",
            "description": "True outcome level.",
            "x-rtemis": {
              "type": "string"
            }
          },
          "predicted": {
            "type": "string",
            "description": "Predicted outcome level.",
            "x-rtemis": {
              "type": "string"
            }
          },
          "n": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of cases.",
            "x-rtemis": {
              "type": "integer"
            }
          }
        },
        "additionalProperties": false,
        "required": ["reference", "predicted", "n"]
      },
      "description": "Confusion matrix, one row per cell.",
      "readOnly": true,
      "x-rtemis": {
        "type": "object",
        "role": "state",
        "container": "table"
      }
    },
    "res_metrics": {
      "type": "array",
      "items": {
        "$ref": "https://schema.rtemis.org/classificationmetrics/v1/schema.json"
      }
    },
    "mean_metrics": {
      "type": ["array", "null"],
      "items": {
        "type": "object",
        "properties": {
          "balanced_accuracy": {
            "type": ["number", "null"],
            "minimum": 0,
            "maximum": 1,
            "x-rtemis": {
              "type": "number"
            }
          },
          "f1": {
            "type": ["number", "null"],
            "minimum": 0,
            "maximum": 1,
            "x-rtemis": {
              "type": "number"
            }
          },
          "accuracy": {
            "type": ["number", "null"],
            "minimum": 0,
            "maximum": 1,
            "x-rtemis": {
              "type": "number"
            }
          },
          "sensitivity": {
            "type": ["number", "null"],
            "minimum": 0,
            "maximum": 1,
            "x-rtemis": {
              "type": "number"
            }
          },
          "specificity": {
            "type": ["number", "null"],
            "minimum": 0,
            "maximum": 1,
            "x-rtemis": {
              "type": "number"
            }
          },
          "ppv": {
            "type": ["number", "null"],
            "minimum": 0,
            "maximum": 1,
            "x-rtemis": {
              "type": "number"
            }
          },
          "npv": {
            "type": ["number", "null"],
            "minimum": 0,
            "maximum": 1,
            "x-rtemis": {
              "type": "number"
            }
          },
          "auc": {
            "type": ["number", "null"],
            "minimum": 0,
            "maximum": 1,
            "x-rtemis": {
              "type": "number"
            }
          },
          "brier_score": {
            "type": ["number", "null"],
            "minimum": 0,
            "maximum": 1,
            "x-rtemis": {
              "type": "number"
            }
          }
        },
        "additionalProperties": false,
        "required": ["balanced_accuracy", "f1", "accuracy"]
      },
      "description": "Mean of each metric across resamples, one row.",
      "readOnly": true,
      "x-rtemis": {
        "type": "object",
        "role": "state",
        "container": "table"
      }
    },
    "sd_metrics": {
      "type": ["array", "null"],
      "items": {
        "type": "object",
        "properties": {
          "balanced_accuracy": {
            "type": ["number", "null"],
            "minimum": 0,
            "x-rtemis": {
              "type": "number"
            }
          },
          "f1": {
            "type": ["number", "null"],
            "minimum": 0,
            "x-rtemis": {
              "type": "number"
            }
          },
          "accuracy": {
            "type": ["number", "null"],
            "minimum": 0,
            "x-rtemis": {
              "type": "number"
            }
          },
          "sensitivity": {
            "type": ["number", "null"],
            "minimum": 0,
            "x-rtemis": {
              "type": "number"
            }
          },
          "specificity": {
            "type": ["number", "null"],
            "minimum": 0,
            "x-rtemis": {
              "type": "number"
            }
          },
          "ppv": {
            "type": ["number", "null"],
            "minimum": 0,
            "x-rtemis": {
              "type": "number"
            }
          },
          "npv": {
            "type": ["number", "null"],
            "minimum": 0,
            "x-rtemis": {
              "type": "number"
            }
          },
          "auc": {
            "type": ["number", "null"],
            "minimum": 0,
            "x-rtemis": {
              "type": "number"
            }
          },
          "brier_score": {
            "type": ["number", "null"],
            "minimum": 0,
            "x-rtemis": {
              "type": "number"
            }
          }
        },
        "additionalProperties": false,
        "required": ["balanced_accuracy", "f1", "accuracy"]
      },
      "description": "Standard deviation of each metric across resamples, one row.",
      "readOnly": true,
      "x-rtemis": {
        "type": "object",
        "role": "state",
        "container": "table"
      }
    }
  }
}
