Skip to main content

fpc_permutation_importance

Function fpc_permutation_importance 

Source
pub fn fpc_permutation_importance(
    fit: &FregreLmResult,
    data: &FdMatrix,
    y: &[f64],
    n_perm: usize,
    seed: u64,
) -> Result<FpcPermutationImportance, FdarError>
Expand description

Permutation importance for a linear functional regression (metric = R^2).

§Errors

Returns FdarError::InvalidDimension if data has zero rows, its column count does not match fit.fpca.mean, or y.len() does not match the row count. Returns FdarError::InvalidParameter if n_perm is zero. Returns FdarError::ComputationFailed if the total sum of squares is zero.

§Examples

use fdars_core::matrix::FdMatrix;
use fdars_core::scalar_on_function::fregre_lm;
use fdars_core::explain::fpc_permutation_importance;

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 imp = fpc_permutation_importance(&fit, &data, &y, 10, 42).unwrap();
assert_eq!(imp.importance.len(), 3);