{
  "group": "convergence",
  "protocol": 1,
  "description": "chi2 = sum (O-E)^2/E, df = sectors - 1, p = Q(df/2, chi2/2); Wilson 95% (z = 1.959963984540054); N_min = ceil(5 / p_min); review when N >= N_min and p < 0.01. Floats: compare with tolerance 1e-9.",
  "cases": [
    {
      "name": "critical_value_df1",
      "df": 1,
      "chi2": 3.841458820694124,
      "expected_p_value": 0.05000000000000013,
      "reference_p": 0.05
    },
    {
      "name": "critical_value_df4",
      "df": 4,
      "chi2": 13.276704135987622,
      "expected_p_value": 0.010000000000000012,
      "reference_p": 0.01
    },
    {
      "name": "wheel_fair_counts",
      "weights": [
        50,
        25,
        15,
        9,
        1
      ],
      "counts": [
        497,
        252,
        151,
        91,
        9
      ],
      "expected": {
        "spins": 1000,
        "n_min": 500,
        "enough_data": true,
        "chi2": 0.1517777777777778,
        "df": 4,
        "p_value": 0.997262059419169,
        "sectors": [
          {
            "weight": 50,
            "expected_share": 0.5,
            "observed": 497,
            "observed_share": 0.497,
            "wilson95": [
              0.4660816352651897,
              0.5279413252857236
            ],
            "inside": true
          },
          {
            "weight": 25,
            "expected_share": 0.25,
            "observed": 252,
            "observed_share": 0.252,
            "wilson95": [
              0.22607471123809428,
              0.279823360970741
            ],
            "inside": true
          },
          {
            "weight": 15,
            "expected_share": 0.15,
            "observed": 151,
            "observed_share": 0.151,
            "wilson95": [
              0.13014612063122316,
              0.17452495679169433
            ],
            "inside": true
          },
          {
            "weight": 9,
            "expected_share": 0.09,
            "observed": 91,
            "observed_share": 0.091,
            "wilson95": [
              0.07470470437164412,
              0.11042558406953998
            ],
            "inside": true
          },
          {
            "weight": 1,
            "expected_share": 0.01,
            "observed": 9,
            "observed_share": 0.009,
            "wilson95": [
              0.004742060667477063,
              0.01701581616533807
            ],
            "inside": true
          }
        ],
        "review": false
      }
    },
    {
      "name": "wheel_skewed_counts",
      "weights": [
        50,
        25,
        15,
        9,
        1
      ],
      "counts": [
        420,
        250,
        150,
        90,
        90
      ],
      "expected": {
        "spins": 1000,
        "n_min": 500,
        "enough_data": true,
        "chi2": 652.8,
        "df": 4,
        "p_value": 5.7724447104338865e-140,
        "sectors": [
          {
            "weight": 50,
            "expected_share": 0.5,
            "observed": 420,
            "observed_share": 0.42,
            "wilson95": [
              0.3897726821587803,
              0.4508395991989084
            ],
            "inside": false
          },
          {
            "weight": 25,
            "expected_share": 0.25,
            "observed": 250,
            "observed_share": 0.25,
            "wilson95": [
              0.2241530989836914,
              0.27776028025908617
            ],
            "inside": true
          },
          {
            "weight": 15,
            "expected_share": 0.15,
            "observed": 150,
            "observed_share": 0.15,
            "wilson95": [
              0.1292100725130883,
              0.17346865842680032
            ],
            "inside": true
          },
          {
            "weight": 9,
            "expected_share": 0.09,
            "observed": 90,
            "observed_share": 0.09,
            "wilson95": [
              0.07379614931508309,
              0.1093417926430721
            ],
            "inside": true
          },
          {
            "weight": 1,
            "expected_share": 0.01,
            "observed": 90,
            "observed_share": 0.09,
            "wilson95": [
              0.07379614931508309,
              0.1093417926430721
            ],
            "inside": false
          }
        ],
        "review": true
      }
    },
    {
      "name": "too_little_data",
      "weights": [
        50,
        25,
        15,
        9,
        1
      ],
      "counts": [
        60,
        20,
        10,
        9,
        1
      ],
      "expected": {
        "spins": 100,
        "n_min": 500,
        "enough_data": false,
        "chi2": 4.666666666666667,
        "df": 4,
        "p_value": 0.3232398928813499,
        "sectors": [
          {
            "weight": 50,
            "expected_share": 0.5,
            "observed": 60,
            "observed_share": 0.6,
            "wilson95": [
              0.5020025867910618,
              0.6905987135675411
            ],
            "inside": false
          },
          {
            "weight": 25,
            "expected_share": 0.25,
            "observed": 20,
            "observed_share": 0.2,
            "wilson95": [
              0.1333669333310325,
              0.2888291655931589
            ],
            "inside": true
          },
          {
            "weight": 15,
            "expected_share": 0.15,
            "observed": 10,
            "observed_share": 0.1,
            "wilson95": [
              0.0552291370606751,
              0.17436566150491345
            ],
            "inside": true
          },
          {
            "weight": 9,
            "expected_share": 0.09,
            "observed": 9,
            "observed_share": 0.09,
            "wilson95": [
              0.04807254000256516,
              0.1622621285271631
            ],
            "inside": true
          },
          {
            "weight": 1,
            "expected_share": 0.01,
            "observed": 1,
            "observed_share": 0.01,
            "wilson95": [
              0.0017674320641406505,
              0.054486196178705315
            ],
            "inside": true
          }
        ],
        "review": false
      }
    }
  ]
}
