Source code for soilstats.analysis.model

import os
import pandas as pd
import rpy2.robjects as ro
from rpy2.robjects import pandas2ri


[docs] class Model: """Model class for analysis.""" def __init__(self, formula: str, data: pd.DataFrame): """Model class for analysis. Args: formula (str): model formula data (pd.DataFrame): data for analysis """ self.formula = formula self.data = data self._stats = self._run()
[docs] def _run(self): """Run the model.""" # define path of R script script_dir = os.path.dirname(os.path.abspath(__file__)) rel_path = "regression.R" regression_path = os.path.join(script_dir, rel_path) with open(regression_path, 'r') as f: ro.r(f.read()) r_reg = ro.r['regression'] with (ro.default_converter + pandas2ri.converter).context(): df_r = ro.conversion.get_conversion().py2rpy(self.data) stats = r_reg(df_r, self.formula) self._rsquared = stats["rsquared"][0] self._intercept = stats["intercept"][0] self._slope = stats["slope"][0]
@property
[docs] def stats(self): """Return model statistics.""" return { "r_squared": self._rsquared, "intercept": self._intercept, "slope": self._slope }