Add new Estimation Model¶
Making a new estimation model involves the following steps:
Make the code¶
Make a new file with an abbreviation of the estimation model’s name.
Any estimation model must be a new class called Model
that inherits from
EstimationModel
. A name for the class must be specified as an
attribute:
from ollin.estimation import EstimationModel
class Model(EstimationModel):
name = 'New Estimation Model'
Estimation is implemented in the estimate method. This method must have as arguments:
- The model instance (self).
- The detection data (
Detection
).
Select the correct return class¶
At Ollin we try to standarize the way we make estimates of state variables.
Hence we try to enforce that every estimation model returns the correct type of
object. For every state variable we provide a specialized Estimate
class for estimation returns. Hence if you are estimating occupancy, we ask
that you return an object of type OccupancyEstimate
.
For example:
from ollin.estimation import EstimationModel
from ollin.estimation.occupancy import OccupancyEstimate
class Model(EstimationModel):
name = 'New estimation model'
class estimate(self, detection):
mean = detection.detections.mean()
return OccupancyEstimate(mean, self.model, detection)
Write a statistical model with Stan¶
For bayesian inference or general statistical modelling we use Stan. To use
Stan in estimation models please use StanModel
as interface. Write
your stan code, and put it in the class attribute stan_code
:
from ollin.estimation import StanModel
stan_code = '''
data {
int M;
int N;
matrix[N, M] x;
vector[N] y;
}
parameters {
vector[M] beta;
float sigma;
}
model {
y ~ normal(x * beta, sigma);
}
'''
class EstimationModelExample(StanModel):
stan_code=stan_code
To check all requirements of StanModels see the documentation
StanModel
.
Stan code must be compiled before use, wich might take some time, but compiled models are stored locally for future use. Ollin handles compilation, saving a loading of stan models automatically.
Add file to estimation library¶
Once the estimation model has been writen, fork the repository and move the
file to ollin/estimation/{variable}/
, where {variable}
stands for the
variable being estimated. Reinstall Ollin using the setup script (see
Installation Guide) and use the model freely! Don’t forget to send the pull
request.