pub fn fpc_shap_values(
fit: &FregreLmResult,
data: &FdMatrix,
scalar_covariates: Option<&FdMatrix>,
) -> Result<FpcShapValues, FdarError>Expand description
Exact SHAP values for a linear functional regression model.
For linear models, SHAP values are exact: values[(i,k)] = coef[1+k] * (score_i_k - mean_k).
The efficiency property holds: base_value + sum_k values[(i,k)] ~ fitted_values[i]
(with scalar covariate effects absorbed into the base value).
§Errors
Returns FdarError::InvalidDimension if data has zero rows or its column
count does not match fit.fpca.mean.
Returns FdarError::InvalidParameter if fit.ncomp is zero.
§Examples
use fdars_core::matrix::FdMatrix;
use fdars_core::scalar_on_function::fregre_lm;
use fdars_core::explain::fpc_shap_values;
let (n, m) = (20, 30);
let data = FdMatrix::from_column_major(
(0..n * m).map(|k| {
let i = (k % n) as f64;
let j = (k / n) as f64;
((i + 1.0) * j * 0.2).sin()
}).collect(),
n, m,
).unwrap();
let y: Vec<f64> = (0..n).map(|i| (i as f64 * 0.5).sin()).collect();
let fit = fregre_lm(&data, &y, None, 3).unwrap();
let shap = fpc_shap_values(&fit, &data, None).unwrap();
assert_eq!(shap.values.shape(), (20, 3));