stock-trek 0.2.2

Stock Trek time-series analysis
Documentation
#[cfg(feature = "python")]
use pyo3::{exceptions::PyRuntimeError, pyfunction, PyResult};

#[cfg(feature = "python")]
#[pyfunction]
pub fn mean_squared_error(true_values: Vec<f64>, predicted_values: Vec<f64>) -> PyResult<f64> {
    let result = crate::statistics::evaluation::mean_squared_error(&true_values, &predicted_values)
        .map_err(|e| PyRuntimeError::new_err(e.to_string()))?;
    Ok(result)
}

#[cfg(feature = "python")]
#[pyfunction]
pub fn root_mean_squared_error(true_values: Vec<f64>, predicted_values: Vec<f64>) -> PyResult<f64> {
    let result =
        crate::statistics::evaluation::root_mean_squared_error(&true_values, &predicted_values)
            .map_err(|e| PyRuntimeError::new_err(e.to_string()))?;
    Ok(result)
}

#[cfg(feature = "python")]
#[pyfunction]
pub fn mean_absolute_error(true_values: Vec<f64>, predicted_values: Vec<f64>) -> PyResult<f64> {
    let result =
        crate::statistics::evaluation::mean_absolute_error(&true_values, &predicted_values)
            .map_err(|e| PyRuntimeError::new_err(e.to_string()))?;
    Ok(result)
}

#[cfg(feature = "python")]
#[pyfunction]
pub fn mean_absolute_percentage_error(
    true_values: Vec<f64>,
    predicted_values: Vec<f64>,
) -> PyResult<f64> {
    let result = crate::statistics::evaluation::mean_absolute_percentage_error(
        &true_values,
        &predicted_values,
    )
    .map_err(|e| PyRuntimeError::new_err(e.to_string()))?;
    Ok(result)
}

#[cfg(feature = "python")]
#[pyfunction]
pub fn log_likelihood(model_parameters: Vec<f64>, observed_data: Vec<f64>) -> PyResult<f64> {
    let result = crate::statistics::evaluation::log_likelihood(&model_parameters, &observed_data)
        .map_err(|e| PyRuntimeError::new_err(e.to_string()))?;
    Ok(result)
}

#[cfg(feature = "python")]
#[pyfunction]
pub fn akaike_information_criterion(
    log_likelihood_value: f64,
    number_of_parameters: usize,
) -> PyResult<f64> {
    let result = crate::statistics::evaluation::akaike_information_criterion(
        log_likelihood_value,
        number_of_parameters,
    )
    .map_err(|e| PyRuntimeError::new_err(e.to_string()))?;
    Ok(result)
}

#[cfg(feature = "python")]
#[pyfunction]
pub fn bayesian_information_criterion(
    log_likelihood_value: f64,
    number_of_parameters: usize,
    number_of_observations: usize,
) -> PyResult<f64> {
    let result = crate::statistics::evaluation::bayesian_information_criterion(
        log_likelihood_value,
        number_of_parameters,
        number_of_observations,
    )
    .map_err(|e| PyRuntimeError::new_err(e.to_string()))?;
    Ok(result)
}