Esempio n. 1
0
    def __init__(self, data: Data, **kwargs):
        if not np.all(data.obs >= 0):
            raise ValueError(
                "Binomial model requires observations to be non-negative.")
        if len(data.col_obs) != 2:
            raise ValueError("Binomial model need 2 columns of observations, "
                             "one for number of events, one for sample size.")
        if any(np.diff(data.get_cols(data.col_obs), axis=1) < 0):
            raise ValueError(
                "Binomial model requires number of events less or equal than sample size."
            )

        self.obs_1s = data.get_cols(data.col_obs[0])
        self.obs_0s = np.diff(data.get_cols(data.col_obs), axis=1).ravel()
        self.obs_sample_sizes = data.get_cols(data.col_obs[1])

        super().__init__(data, **kwargs)
Esempio n. 2
0
    def get_mat(self, data: Data) -> np.ndarray:
        """Get design matrix.

        Parameters
        ----------
        data : Data
            Data object that provides the covariates.

        Returns
        -------
        np.ndarray
            Design matrix.
        """
        self.check_data(data)
        cov = data.get_cols(self.name)
        return self.spline.design_mat(cov, l_extra=True, r_extra=True)
Esempio n. 3
0
    def check_data(self, data: Data):
        """Check if the data contains the column name `name`. And create the
        spline object, if only `spline_specs` is provided.

        Parameters
        ----------
        data : Data
            Data object to be checked.
        """
        super().check_data(data)
        if self.spline is None:
            cov = data.get_cols(self.name)
            self.spline = self.spline_specs.create_spline(cov)
            for prior in self.linear_upriors + self.linear_gpriors:
                if isinstance(prior, SplinePrior):
                    prior.attach_spline(self.spline)
Esempio n. 4
0
def test_post_init_fill_df(df_simple):
    data = Data(COL_OBS, df=df_simple)
    assert data.num_obs == NUM_OBS
    assert all(data.weights == 1.0)
    assert all(data.offset == 0.0)
    assert all(data.get_cols('intercept') == 1.0)