{
  "research_audit": {
    "temporal_validation": {
      "name": "observed-versus-forecast boundary",
      "passed": true,
      "details": "Postgame observations support historical research only and cannot enter a pregame projection feature."
    },
    "baseline_checks": [
      {
        "name": "registered contrast",
        "passed": true,
        "details": "observed 15+ mph wind vs below 10 mph with complete position scoring"
      },
      {
        "name": "adjusted and unadjusted estimates",
        "passed": true,
        "details": "Every outcome preserves group means plus adjusted and unadjusted differences."
      }
    ],
    "uncertainty": {
      "name": "bootstrap and robust intervals",
      "passed": true,
      "details": "Every outcome reports a bootstrap comparison and an HC3 robust adjusted interval."
    },
    "missingness": {
      "input_rows": 2127,
      "analyzed_rows": 907,
      "excluded_rows": 1220,
      "missing_by_field": {
        "outside_registered_contrast_or_incomplete": 1220,
        "weekly_position_scoring": 1
      },
      "reconciled": true
    },
    "sensitivity_checks": [
      {
        "name": "multiplicity correction",
        "passed": true,
        "details": "Holm-adjusted p-values cover the preregistered outcome family."
      },
      {
        "name": "per-outcome denominator accounting",
        "passed": true,
        "details": "Each outcome records its own condition, control, and undefined-game counts; field-goal accuracy is undefined when neither team attempted a field goal."
      },
      {
        "name": "deterministic bootstrap",
        "passed": true,
        "details": "Each outcome bootstrap uses a SHA-256-derived seed label and two complete analysis executions produced the same result hash."
      },
      {
        "name": "station agreement",
        "passed": true,
        "details": "At least 1,000 games have paired-station wind readings and their mean absolute difference is no more than 2.5 m/s."
      },
      {
        "name": "weekly position-scoring coverage",
        "passed": true,
        "details": "Every completed season is present and at least 99.9% of games include both teams' QB, RB, WR, and TE scoring."
      }
    ],
    "leakage_checks": [
      {
        "name": "prediction boundary",
        "passed": true,
        "details": "The article cannot describe observed postgame weather as a forecast input."
      }
    ],
    "withholding_checks": [
      {
        "name": "study sample gate",
        "passed": true,
        "details": "101 condition and 907 comparable games cleared the registered floors."
      },
      {
        "name": "evidence bundle gates",
        "passed": true,
        "details": "Rights, coverage, station agreement, and reproducibility gates passed."
      },
      {
        "name": "association scope",
        "passed": true,
        "details": "The study is limited to association and does not claim causality."
      }
    ]
  },
  "study": "How Does 15+ MPH Wind Change NFL Fantasy Scoring by Position?",
  "study_id": "weather-position-effects",
  "data_through": 2024,
  "population": "NFL regular-season games",
  "estimand": "Observed association for observed 15+ mph wind vs below 10 mph with complete position scoring, with adjusted and unadjusted game-level comparisons.",
  "sample": {
    "condition_games": 101,
    "control_games": 806,
    "comparable_games": 907,
    "minimum_complete_games": 750,
    "minimum_condition_games": 100,
    "outcome_denominators": {
      "primary:qb_fantasy_points_ppr": {
        "condition_games": 101,
        "control_games": 806,
        "total_games": 907,
        "not_defined_in_comparable_games": 0
      },
      "primary:rb_fantasy_points_ppr": {
        "condition_games": 101,
        "control_games": 806,
        "total_games": 907,
        "not_defined_in_comparable_games": 0
      },
      "primary:wr_fantasy_points_ppr": {
        "condition_games": 101,
        "control_games": 806,
        "total_games": 907,
        "not_defined_in_comparable_games": 0
      },
      "primary:te_fantasy_points_ppr": {
        "condition_games": 101,
        "control_games": 806,
        "total_games": 907,
        "not_defined_in_comparable_games": 0
      },
      "primary:kicker_fantasy_points": {
        "condition_games": 101,
        "control_games": 806,
        "total_games": 907,
        "not_defined_in_comparable_games": 0
      }
    }
  },
  "contrast": "observed 15+ mph wind vs below 10 mph with complete position scoring",
  "effects": [
    {
      "study_id": "weather-position-effects",
      "publication_decision": "eligible",
      "contrast_id": "primary",
      "contrast": "observed 15+ mph wind vs below 10 mph with complete position scoring",
      "condition_label": "15+ mph wind",
      "control_label": "Below 10 mph",
      "contrast_comparable_games": 907,
      "outcome": "qb_fantasy_points_ppr",
      "label": "Combined QB PPR points",
      "units": "points-per-game",
      "condition_games": 101,
      "control_games": 806,
      "condition_estimate": 31.57049504950495,
      "control_estimate": 33.82615384615385,
      "unadjusted_difference": -2.255658796648902,
      "bootstrap_ci_95_lower": -4.671087161879963,
      "bootstrap_ci_95_upper": 0.1526271650738347,
      "bootstrap_p_value": 0.0655,
      "p_value": 0.1319430490310963,
      "adjusted_difference": -2.0066668732511985,
      "robust_standard_error": 1.3320203043230685,
      "adjusted_ci_95_lower": -4.617426669724413,
      "adjusted_ci_95_upper": 0.6040929232220154,
      "controls": "week and season fixed effects; air temp c; home team and away team fixed effects",
      "holm_adjusted_p": 0.3958291470932891
    },
    {
      "study_id": "weather-position-effects",
      "publication_decision": "eligible",
      "contrast_id": "primary",
      "contrast": "observed 15+ mph wind vs below 10 mph with complete position scoring",
      "condition_label": "15+ mph wind",
      "control_label": "Below 10 mph",
      "contrast_comparable_games": 907,
      "outcome": "rb_fantasy_points_ppr",
      "label": "Combined RB PPR points",
      "units": "points-per-game",
      "condition_games": 101,
      "control_games": 806,
      "condition_estimate": 46.91188118811881,
      "control_estimate": 45.0228535980149,
      "unadjusted_difference": 1.8890275901039144,
      "bootstrap_ci_95_lower": -1.0263448517308442,
      "bootstrap_ci_95_upper": 4.970396211581462,
      "bootstrap_p_value": 0.2045,
      "p_value": 0.3124176361833103,
      "adjusted_difference": 1.7783224240525204,
      "robust_standard_error": 1.7604327387836445,
      "adjusted_ci_95_lower": -1.6721257439634225,
      "adjusted_ci_95_upper": 5.228770592068463,
      "controls": "week and season fixed effects; air temp c; home team and away team fixed effects",
      "holm_adjusted_p": 0.4906859084132908
    },
    {
      "study_id": "weather-position-effects",
      "publication_decision": "eligible",
      "contrast_id": "primary",
      "contrast": "observed 15+ mph wind vs below 10 mph with complete position scoring",
      "condition_label": "15+ mph wind",
      "control_label": "Below 10 mph",
      "contrast_comparable_games": 907,
      "outcome": "wr_fantasy_points_ppr",
      "label": "Combined WR PPR points",
      "units": "points-per-game",
      "condition_games": 101,
      "control_games": 806,
      "condition_estimate": 62.99722772277227,
      "control_estimate": 68.50523573200992,
      "unadjusted_difference": -5.508008009237649,
      "bootstrap_ci_95_lower": -9.382740246419171,
      "bootstrap_ci_95_upper": -1.3052289020465475,
      "bootstrap_p_value": 0.0105,
      "p_value": 0.2453429542066454,
      "adjusted_difference": -2.596710243593867,
      "robust_standard_error": 2.235199343201562,
      "adjusted_ci_95_lower": -6.977700956268929,
      "adjusted_ci_95_upper": 1.7842804690811946,
      "controls": "week and season fixed effects; air temp c; home team and away team fixed effects",
      "holm_adjusted_p": 0.4906859084132908
    },
    {
      "study_id": "weather-position-effects",
      "publication_decision": "eligible",
      "contrast_id": "primary",
      "contrast": "observed 15+ mph wind vs below 10 mph with complete position scoring",
      "condition_label": "15+ mph wind",
      "control_label": "Below 10 mph",
      "contrast_comparable_games": 907,
      "outcome": "te_fantasy_points_ppr",
      "label": "Combined TE PPR points",
      "units": "points-per-game",
      "condition_games": 101,
      "control_games": 806,
      "condition_estimate": 22.385148514851487,
      "control_estimate": 24.745707196029777,
      "unadjusted_difference": -2.36055868117829,
      "bootstrap_ci_95_lower": -4.783514624229173,
      "bootstrap_ci_95_upper": 0.11496778492986,
      "bootstrap_p_value": 0.062,
      "p_value": 0.0257430229624829,
      "adjusted_difference": -2.9394527346990484,
      "robust_standard_error": 1.318100884643386,
      "adjusted_ci_95_lower": -5.522930468600085,
      "adjusted_ci_95_upper": -0.3559750007980122,
      "controls": "week and season fixed effects; air temp c; home team and away team fixed effects",
      "holm_adjusted_p": 0.1287151148124149
    },
    {
      "study_id": "weather-position-effects",
      "publication_decision": "eligible",
      "contrast_id": "primary",
      "contrast": "observed 15+ mph wind vs below 10 mph with complete position scoring",
      "condition_label": "15+ mph wind",
      "control_label": "Below 10 mph",
      "contrast_comparable_games": 907,
      "outcome": "kicker_fantasy_points",
      "label": "Combined kicker fantasy points",
      "units": "points-per-game",
      "condition_games": 101,
      "control_games": 806,
      "condition_estimate": 13.910891089108912,
      "control_estimate": 15.998759305210918,
      "unadjusted_difference": -2.087868216102006,
      "bootstrap_ci_95_lower": -3.1120820332653616,
      "bootstrap_ci_95_upper": -1.044669311844336,
      "bootstrap_p_value": 0.0005,
      "p_value": 0.0276299568066783,
      "adjusted_difference": -1.403112271322194,
      "robust_standard_error": 0.6370541652315845,
      "adjusted_ci_95_lower": -2.6517384351760995,
      "adjusted_ci_95_upper": -0.1544861074682884,
      "controls": "week and season fixed effects; air temp c; home team and away team fixed effects",
      "holm_adjusted_p": 0.1287151148124149
    }
  ],
  "source_lag": {
    "available_through": "2024",
    "handling": "Weather-dependent studies stop at the latest available season; the next refresh retries automatically.",
    "requested_through": "2025",
    "source_key": "noaa-global-hourly"
  },
  "source_applicability": {
    "football_data_through": 2025,
    "observed_weather_data_through": 2024,
    "observed_weather_role": "defines the 15+ mph and below-10-mph comparison groups",
    "weekly_player_data_through": 2025,
    "weekly_position_scoring_coverage": 0.999529854254819
  },
  "reproducibility": {
    "first_sha256": "dd8586d841f1396ebcfdecf9183eace6dd8c4a5e3126ca1f9ad77e8b7b5434aa",
    "matched": true,
    "second_sha256": "dd8586d841f1396ebcfdecf9183eace6dd8c4a5e3126ca1f9ad77e8b7b5434aa",
    "bootstrap_repetitions": 4000,
    "bootstrap_seed_policy": "NumPy PCG64 seeded separately for each outcome from the unsigned integer encoded by the first eight bytes of SHA-256(study_id:outcome).",
    "seed_labels": [
      "weather-position-effects:primary:qb_fantasy_points_ppr",
      "weather-position-effects:primary:rb_fantasy_points_ppr",
      "weather-position-effects:primary:wr_fantasy_points_ppr",
      "weather-position-effects:primary:te_fantasy_points_ppr",
      "weather-position-effects:primary:kicker_fantasy_points"
    ]
  }
}
