{
  "model_comparison": [
    {
      "model": "baseline_marginal_probs",
      "cv_logloss": 1.2280812119326383,
      "n_features": 0,
      "pseudo_R2_vs_baseline": 0.0
    },
    {
      "model": "ligand_family_only",
      "cv_logloss": 0.9440376798556523,
      "n_features": 7,
      "pseudo_R2_vs_baseline": 0.23129051183022742
    },
    {
      "model": "gene_only",
      "cv_logloss": 0.8962096808982962,
      "n_features": 17,
      "pseudo_R2_vs_baseline": 0.2702358181280813
    },
    {
      "model": "clade_only",
      "cv_logloss": 1.1969144517515908,
      "n_features": 15,
      "pseudo_R2_vs_baseline": 0.025378419503707006
    },
    {
      "model": "ligand_family_plus_clade",
      "cv_logloss": 0.9155453687020003,
      "n_features": 22,
      "pseudo_R2_vs_baseline": 0.25449118526843884
    },
    {
      "model": "ligand_family_plus_gene",
      "cv_logloss": 0.895932223581392,
      "n_features": 24,
      "pseudo_R2_vs_baseline": 0.2704617456271817
    },
    {
      "model": "gene_plus_clade",
      "cv_logloss": 0.871112086461068,
      "n_features": 32,
      "pseudo_R2_vs_baseline": 0.2906722470819385
    }
  ],
  "marginal_gain_family_beyond_gene": {
    "gene_only_cv_logloss": 0.8962096808982962,
    "gene_plus_ligand_cv_logloss": 0.895932223581392,
    "absolute_logloss_reduction": 0.00027745731690420605,
    "relative_improvement_pct": 0.030958973420829684,
    "permutation_test": {
      "n_permutations": 200,
      "null_mean_gain": 0.0005398178264559433,
      "null_sd_gain": 0.0007431947671476441,
      "observed_gain": 0.00027745731690420605,
      "p_value": 0.6368159203980099,
      "interpretation": "Observed marginal gain from adding ligand_family on top of gene-level (best_ref) features is NOT distinguishable from the null distribution obtained by shuffling ligand_family within gene groups (p=0.64). Ligand family's predictive signal is fully redundant with finer receptor-type identity."
    }
  },
  "normalized_mutual_information": {
    "ligand_family_vs_mechanism": 0.19814206004329749,
    "gene_bestref_vs_mechanism": 0.17646206424263225,
    "clade_vs_mechanism": 0.02455853020985168
  },
  "sample_size": {
    "total_modeled_n": 11059,
    "excluded_no_arg350_n": 550
  },
  "note_on_best_ref": "best_ref (18 reference receptors) is a REFINEMENT of ref_family (7 broad ligand families) -- each best_ref maps to exactly one ref_family, but multiple best_ref values can share a ref_family. best_ref therefore carries at least as much information as ref_family by construction; the key finding is that ligand_family adds ZERO information beyond best_ref (permutation p=0.64)."
}