{
  "research_audit": {
    "temporal_validation": {
      "name": "cutoff-safe forecast scoring",
      "passed": true,
      "details": "Every retained HRRR object proves source availability before its registered 6-hour or 24-hour cutoff."
    },
    "baseline_checks": [
      {
        "name": "paired horizon baseline",
        "passed": true,
        "details": "Six-hour forecasts are compared with 24-hour forecasts for the same stadium-games inside each HRRR version."
      }
    ],
    "uncertainty": {
      "name": "deterministic bootstrap intervals",
      "passed": true,
      "details": "Every error mean and paired horizon difference has a 4,000-draw nonparametric bootstrap interval."
    },
    "missingness": {
      "input_rows": 2516,
      "analyzed_rows": 2205,
      "excluded_rows": 311,
      "missing_by_field": {
        "unresolved_archive_requests": 311
      },
      "reconciled": true
    },
    "sensitivity_checks": [
      {
        "name": "model-version stratification",
        "passed": true,
        "details": "HRRRv3 and HRRRv4 errors are never pooled into one headline estimate."
      },
      {
        "name": "deterministic rerun",
        "passed": true,
        "details": "Two complete scorecard executions produced the same result hash."
      }
    ],
    "leakage_checks": [
      {
        "name": "postgame observation boundary",
        "passed": true,
        "details": "NOAA observations score forecasts after games and never become forecast inputs."
      }
    ],
    "withholding_checks": [
      {
        "name": "forecast release gates",
        "passed": true,
        "details": "Sample, coverage, version, cutoff, and reproducibility gates all pass."
      }
    ]
  },
  "study": "NFL Weather Forecast Accuracy: 6 vs. 24 Hours Before Kickoff",
  "study_id": "weather-forecast-skill",
  "data_through": 2024,
  "population": "NFL regular-season stadium-game forecasts",
  "estimand": "Cutoff-safe forecast error and paired 6-hour-minus-24-hour error; negative paired differences mean the 6-hour forecast was more accurate.",
  "sample": {
    "expected_requests": 2516,
    "completed_forecasts": 2205,
    "coverage": 0.8763910969793323,
    "stadium_coverage": 1.0
  },
  "forecast_groups": [
    {
      "cutoff_hours": 6,
      "forecast_missingness": 0.0,
      "forecasts": 352,
      "precipitation_brier_ci_95": [
        0.0872093023255814,
        0.1569767441860465
      ],
      "precipitation_brier_score": 0.12209302325581395,
      "precipitation_calibration": [
        {
          "forecasts": 276,
          "observed_rain_rate": 0.04363636363636364,
          "predicted_probability": 0.0
        },
        {
          "forecasts": 76,
          "observed_rain_rate": 0.5652173913043478,
          "predicted_probability": 1.0
        }
      ],
      "precipitation_pairs": 344,
      "provider_model": "HRRRv3",
      "temperature_mae_c": 1.5097301136363603,
      "temperature_mae_ci_95_c": [
        1.3924609374999968,
        1.6342329545454513
      ],
      "temperature_pairs": 352,
      "wind_mae_ci_95_mps": [
        1.012279845900591,
        1.218898721343543
      ],
      "wind_mae_mps": 1.1158654144911235,
      "wind_pairs": 342
    },
    {
      "cutoff_hours": 24,
      "forecast_missingness": 0.0,
      "forecasts": 326,
      "precipitation_brier_ci_95": [
        0.1,
        0.178125
      ],
      "precipitation_brier_score": 0.1375,
      "precipitation_calibration": [
        {
          "forecasts": 257,
          "observed_rain_rate": 0.05078125,
          "predicted_probability": 0.0
        },
        {
          "forecasts": 69,
          "observed_rain_rate": 0.515625,
          "predicted_probability": 1.0
        }
      ],
      "precipitation_pairs": 320,
      "provider_model": "HRRRv3",
      "temperature_mae_c": 1.6649539877300603,
      "temperature_mae_ci_95_c": [
        1.5299846625766855,
        1.8101342024539875
      ],
      "temperature_pairs": 326,
      "wind_mae_ci_95_mps": [
        1.096846790516639,
        1.3267506817266816
      ],
      "wind_mae_mps": 1.210438379877655,
      "wind_pairs": 317
    },
    {
      "cutoff_hours": 6,
      "forecast_missingness": 0.0,
      "forecasts": 764,
      "precipitation_brier_ci_95": [
        0.08344370860927153,
        0.12582781456953643
      ],
      "precipitation_brier_score": 0.10463576158940398,
      "precipitation_calibration": [
        {
          "forecasts": 609,
          "observed_rain_rate": 0.03471074380165289,
          "predicted_probability": 0.0
        },
        {
          "forecasts": 155,
          "observed_rain_rate": 0.6133333333333333,
          "predicted_probability": 1.0
        }
      ],
      "precipitation_pairs": 755,
      "provider_model": "HRRRv4",
      "temperature_mae_c": 1.503272307231156,
      "temperature_mae_ci_95_c": [
        1.4154994844766104,
        1.5980582475911795
      ],
      "temperature_pairs": 764,
      "wind_mae_ci_95_mps": [
        0.9941744573088255,
        1.121867957637645
      ],
      "wind_mae_mps": 1.0567595888399106,
      "wind_pairs": 740
    },
    {
      "cutoff_hours": 24,
      "forecast_missingness": 0.0,
      "forecasts": 763,
      "precipitation_brier_ci_95": [
        0.09814323607427056,
        0.1432692307692309
      ],
      "precipitation_brier_score": 0.1206896551724138,
      "precipitation_calibration": [
        {
          "forecasts": 612,
          "observed_rain_rate": 0.0462046204620462,
          "predicted_probability": 0.0
        },
        {
          "forecasts": 151,
          "observed_rain_rate": 0.5743243243243243,
          "predicted_probability": 1.0
        }
      ],
      "precipitation_pairs": 754,
      "provider_model": "HRRRv4",
      "temperature_mae_c": 1.7831373182224155,
      "temperature_mae_ci_95_c": [
        1.681021251953434,
        1.8874221548777783
      ],
      "temperature_pairs": 763,
      "wind_mae_ci_95_mps": [
        1.0562904717223172,
        1.1942273694395715
      ],
      "wind_mae_mps": 1.125241202763479,
      "wind_pairs": 739
    }
  ],
  "horizon_comparisons": [
    {
      "comparison": "6-hour minus 24-hour forecast error",
      "complete_pairs": 316,
      "precipitation_brier_difference": -0.009404388714733543,
      "precipitation_brier_difference_ci_95": [
        -0.04075235109717868,
        0.0219435736677116
      ],
      "provider_model": "HRRRv3",
      "temperature_mae_difference_c": -0.14607692307692427,
      "temperature_mae_difference_c_ci_95": [
        -0.2533346153846162,
        -0.03753461538461687
      ],
      "wind_mae_difference_mps": -0.08396094082934016,
      "wind_mae_difference_mps_ci_95": [
        -0.14384159339740574,
        -0.024061806449042433
      ]
    },
    {
      "comparison": "6-hour minus 24-hour forecast error",
      "complete_pairs": 739,
      "precipitation_brier_difference": -0.015915119363395226,
      "precipitation_brier_difference_ci_95": [
        -0.038461538461538464,
        0.005305039787798408
      ],
      "provider_model": "HRRRv4",
      "temperature_mae_difference_c": -0.2813351652412845,
      "temperature_mae_difference_c_ci_95": [
        -0.35036355734808583,
        -0.21378682627746615
      ],
      "wind_mae_difference_mps": -0.06924577438009134,
      "wind_mae_difference_mps_ci_95": [
        -0.11488357790137955,
        -0.024356269401788967
      ]
    }
  ],
  "method_amendment": {
    "from_analysis_version": "1.0.0",
    "locked_at": "2026-09-03T10:00:00+00:00",
    "locked_before_release_sample": true,
    "reason": "The pilot scorecard reported point errors only. Version 1.1.0 preregistered uncertainty before the 85% release sample and before public forecast-skill claims."
  }
}
