mirror of
https://github.com/acamarata/pray-calc-ml.git
synced 2026-06-30 19:04:26 +00:00
Comprehensive analysis of 83k records across 11 model types. Key finding: physical variables (lat, day_of_year) explain the correct seasonal-latitude interaction pattern, but the heterogeneous dataset has a 3.3 degree noise floor from incompatible measurement methodologies. Recommended DPC formula (Medium-9): f(abs_lat, day_of_year) -> angle 9 terms: intercept + abs_lat + 4 seasonal harmonics + 4 lat*season interactions Mandatory args: abs(latitude), day_of_year Optional: elevation_m (+0.0007 deg/m) Not needed: longitude (data artifact, not physics) See analysis_results.md for full formulas with coefficients.
334 lines
No EOL
8.1 KiB
JSON
334 lines
No EOL
8.1 KiB
JSON
{
|
|
"fajr": {
|
|
"model_comparison": {
|
|
"Simple-5": {
|
|
"r2": 0.0037294032319437507,
|
|
"mae": 3.381430344476216,
|
|
"rmse": 3.984818643437369,
|
|
"terms": 5
|
|
},
|
|
"Medium-9": {
|
|
"r2": 0.007737993749145522,
|
|
"mae": 3.3627760770456847,
|
|
"rmse": 3.976777933646338,
|
|
"terms": 9
|
|
},
|
|
"Full-14": {
|
|
"r2": 0.01639481886729226,
|
|
"mae": 3.345013458456923,
|
|
"rmse": 3.9594219633550756,
|
|
"terms": 14
|
|
},
|
|
"Full+3rdHarm-18": {
|
|
"r2": 0.020661384021336215,
|
|
"mae": 3.336802072840702,
|
|
"rmse": 3.950824158726502,
|
|
"terms": 18
|
|
},
|
|
"GBR (no lng)": {
|
|
"r2": 0.236195535734822,
|
|
"mae": 2.7373858090357377,
|
|
"rmse": 3.4890663798056827,
|
|
"terms": "tree"
|
|
},
|
|
"GBR (with lng)": {
|
|
"r2": 0.24822079798663896,
|
|
"mae": 2.7051306330358273,
|
|
"rmse": 3.4614550243166375,
|
|
"terms": "tree"
|
|
},
|
|
"RF (with lng)": {
|
|
"r2": 0.24768394351428089,
|
|
"mae": 2.6843915746185916,
|
|
"rmse": 3.4627216933088065,
|
|
"terms": "tree"
|
|
}
|
|
},
|
|
"recommended_formula": {
|
|
"intercept": 15.54082967950781,
|
|
"coefficients": {
|
|
"abs_lat": -0.1759002088821986,
|
|
"sin_doy": -0.38529047072698375,
|
|
"cos_doy": 1.2126189745706981,
|
|
"sin_2doy": -0.5968800982699566,
|
|
"cos_2doy": 0.7911049208541243,
|
|
"abs_lat*sin_doy": 0.004109107638723691,
|
|
"abs_lat*cos_doy": -0.08685150481427173,
|
|
"abs_lat*sin_2doy": 0.01127401125451497,
|
|
"abs_lat*cos_2doy": -0.02487844468431522,
|
|
"abs_lat^2": 0.004944715408442619,
|
|
"abs_lat^2*sin_doy": 0.00011795308249738109,
|
|
"abs_lat^2*cos_doy": 0.0011284481834558614,
|
|
"abs_lat^3": -4.1015518814461417e-05,
|
|
"elev": 0.0006606981432948898
|
|
},
|
|
"feature_names": [
|
|
"abs_lat",
|
|
"sin_doy",
|
|
"cos_doy",
|
|
"sin_2doy",
|
|
"cos_2doy",
|
|
"abs_lat*sin_doy",
|
|
"abs_lat*cos_doy",
|
|
"abs_lat*sin_2doy",
|
|
"abs_lat*cos_2doy",
|
|
"abs_lat^2",
|
|
"abs_lat^2*sin_doy",
|
|
"abs_lat^2*cos_doy",
|
|
"abs_lat^3",
|
|
"elev"
|
|
]
|
|
},
|
|
"per_band_linear": {
|
|
"0-15": {
|
|
"n": 1899,
|
|
"mean": 14.73,
|
|
"mae": 2.4314,
|
|
"rmse": 3.0092,
|
|
"r2": -0.101055
|
|
},
|
|
"15-30": {
|
|
"n": 4860,
|
|
"mean": 13.78,
|
|
"mae": 3.3601,
|
|
"rmse": 3.9979,
|
|
"r2": -0.019705
|
|
},
|
|
"30-45": {
|
|
"n": 28038,
|
|
"mean": 13.82,
|
|
"mae": 3.6495,
|
|
"rmse": 4.1639,
|
|
"r2": 0.008841
|
|
},
|
|
"45-60": {
|
|
"n": 13126,
|
|
"mean": 14.41,
|
|
"mae": 2.8208,
|
|
"rmse": 3.6011,
|
|
"r2": 0.040659
|
|
},
|
|
"60-70": {
|
|
"n": 724,
|
|
"mean": 14.43,
|
|
"mae": 3.2761,
|
|
"rmse": 3.8828,
|
|
"r2": 0.031951
|
|
}
|
|
},
|
|
"per_band_gbr": {
|
|
"0-15": {
|
|
"n": 1899,
|
|
"mae": 1.6345,
|
|
"r2": 0.460556
|
|
},
|
|
"15-30": {
|
|
"n": 4860,
|
|
"mae": 3.1422,
|
|
"r2": 0.094083
|
|
},
|
|
"30-45": {
|
|
"n": 28038,
|
|
"mae": 2.8216,
|
|
"r2": 0.302304
|
|
},
|
|
"45-60": {
|
|
"n": 13126,
|
|
"mae": 2.1238,
|
|
"r2": 0.352742
|
|
},
|
|
"60-70": {
|
|
"n": 724,
|
|
"mae": 2.6796,
|
|
"r2": 0.324101
|
|
}
|
|
},
|
|
"data_stats": {
|
|
"n": 48647,
|
|
"mean": 14.018684446834104,
|
|
"std": 3.992536352703117,
|
|
"min": 7.001979953582796,
|
|
"max": 21.999743910929467
|
|
},
|
|
"medium_formula": {
|
|
"intercept": 14.180410692819587,
|
|
"coefficients": {
|
|
"abs_lat": -0.004033430644220256,
|
|
"sin_doy": -0.620355629033609,
|
|
"cos_doy": -0.1073962588977038,
|
|
"sin_2doy": -0.6685569552606863,
|
|
"cos_2doy": 0.5680496109805692,
|
|
"abs_lat*sin_doy": 0.014678703458006518,
|
|
"abs_lat*cos_doy": -0.004863536644432507,
|
|
"abs_lat*sin_2doy": 0.012667090495126133,
|
|
"abs_lat*cos_2doy": -0.01963766317111711
|
|
}
|
|
}
|
|
},
|
|
"isha": {
|
|
"model_comparison": {
|
|
"Simple-5": {
|
|
"r2": 0.0025881413978093406,
|
|
"mae": 3.2866329036408857,
|
|
"rmse": 3.682317046063136,
|
|
"terms": 5
|
|
},
|
|
"Medium-9": {
|
|
"r2": 0.00488234209111138,
|
|
"mae": 3.2794198739501845,
|
|
"rmse": 3.678073921209377,
|
|
"terms": 9
|
|
},
|
|
"Full-14": {
|
|
"r2": 0.00777731358187661,
|
|
"mae": 3.2679623718024673,
|
|
"rmse": 3.6727157734194877,
|
|
"terms": 14
|
|
},
|
|
"Full+3rdHarm-18": {
|
|
"r2": 0.008089966130246772,
|
|
"mae": 3.266715275509219,
|
|
"rmse": 3.6721358229647736,
|
|
"terms": 18
|
|
},
|
|
"GBR (no lng)": {
|
|
"r2": 0.25612487085877333,
|
|
"mae": 2.5999770638896114,
|
|
"rmse": 3.1800291730680272,
|
|
"terms": "tree"
|
|
},
|
|
"GBR (with lng)": {
|
|
"r2": 0.26410775806459996,
|
|
"mae": 2.581165704259283,
|
|
"rmse": 3.162926613553637,
|
|
"terms": "tree"
|
|
},
|
|
"RF (with lng)": {
|
|
"r2": 0.2664862210707678,
|
|
"mae": 2.5726380263489164,
|
|
"rmse": 3.157804129726421,
|
|
"terms": "tree"
|
|
}
|
|
},
|
|
"recommended_formula": {
|
|
"intercept": 15.864854036971996,
|
|
"coefficients": {
|
|
"abs_lat": -0.034480932269895494,
|
|
"sin_doy": -1.06285562552457,
|
|
"cos_doy": 0.7699403067194821,
|
|
"sin_2doy": -0.233626928673645,
|
|
"cos_2doy": -0.042571839262928186,
|
|
"abs_lat*sin_doy": 0.05506929227342321,
|
|
"abs_lat*cos_doy": -0.04888022777463985,
|
|
"abs_lat*sin_2doy": 0.0027786682672281734,
|
|
"abs_lat*cos_2doy": -0.004584563291871479,
|
|
"abs_lat^2": 0.00010685222255441428,
|
|
"abs_lat^2*sin_doy": -0.0005702653779849103,
|
|
"abs_lat^2*cos_doy": 0.0005765223497612091,
|
|
"abs_lat^3": 4.9599806824073855e-06,
|
|
"elev": 0.00033966145771243696
|
|
},
|
|
"feature_names": [
|
|
"abs_lat",
|
|
"sin_doy",
|
|
"cos_doy",
|
|
"sin_2doy",
|
|
"cos_2doy",
|
|
"abs_lat*sin_doy",
|
|
"abs_lat*cos_doy",
|
|
"abs_lat*sin_2doy",
|
|
"abs_lat*cos_2doy",
|
|
"abs_lat^2",
|
|
"abs_lat^2*sin_doy",
|
|
"abs_lat^2*cos_doy",
|
|
"abs_lat^3",
|
|
"elev"
|
|
]
|
|
},
|
|
"per_band_linear": {
|
|
"0-15": {
|
|
"n": 178,
|
|
"mean": 15.76,
|
|
"mae": 3.0588,
|
|
"rmse": 3.4955,
|
|
"r2": 0.027476
|
|
},
|
|
"15-30": {
|
|
"n": 4360,
|
|
"mean": 15.18,
|
|
"mae": 3.1446,
|
|
"rmse": 3.5942,
|
|
"r2": -0.012017
|
|
},
|
|
"30-45": {
|
|
"n": 23616,
|
|
"mean": 14.94,
|
|
"mae": 3.312,
|
|
"rmse": 3.6883,
|
|
"r2": 0.007525
|
|
},
|
|
"45-60": {
|
|
"n": 5915,
|
|
"mean": 16.09,
|
|
"mae": 3.1879,
|
|
"rmse": 3.6658,
|
|
"r2": -0.048477
|
|
},
|
|
"60-70": {
|
|
"n": 442,
|
|
"mean": 15.05,
|
|
"mae": 3.1522,
|
|
"rmse": 3.608,
|
|
"r2": -0.036892
|
|
}
|
|
},
|
|
"per_band_gbr": {
|
|
"0-15": {
|
|
"n": 178,
|
|
"mae": 2.6117,
|
|
"r2": 0.258285
|
|
},
|
|
"15-30": {
|
|
"n": 4360,
|
|
"mae": 2.7468,
|
|
"r2": 0.191277
|
|
},
|
|
"30-45": {
|
|
"n": 23616,
|
|
"mae": 2.3886,
|
|
"r2": 0.355418
|
|
},
|
|
"45-60": {
|
|
"n": 5915,
|
|
"mae": 2.4819,
|
|
"r2": 0.306523
|
|
},
|
|
"60-70": {
|
|
"n": 442,
|
|
"mae": 2.5377,
|
|
"r2": 0.289367
|
|
}
|
|
},
|
|
"data_stats": {
|
|
"n": 34511,
|
|
"mean": 15.174020672108975,
|
|
"std": 3.687488123478661,
|
|
"min": 10.000116676082458,
|
|
"max": 21.99926238259298
|
|
},
|
|
"medium_formula": {
|
|
"intercept": 15.326614884802717,
|
|
"coefficients": {
|
|
"abs_lat": -0.0050118005501870915,
|
|
"sin_doy": -0.22772992150552812,
|
|
"cos_doy": -0.11138064221643007,
|
|
"sin_2doy": -0.2157568787073702,
|
|
"cos_2doy": -0.03724246711156049,
|
|
"abs_lat*sin_doy": 0.009975172113063641,
|
|
"abs_lat*cos_doy": -0.0027871993819204477,
|
|
"abs_lat*sin_2doy": 0.0023014113789451254,
|
|
"abs_lat*cos_2doy": -0.004852170656249994
|
|
}
|
|
}
|
|
}
|
|
} |