I have an insurance data set to predict frequency of claims. Using the python statsmodel package, I set the risk units (named eunits) as an offset in the model object. However, using the stan language, I’m not sure how to code it. Do I just subtract the eunit on the end like the below model section?
liability_code = """
data {
int<lower=0> N;
vector[N] driver_age;
vector[N] BIlmt;
int<lower=0> y1[N];
}
parameters {
real driver_age_coeff; //parameters is what we want to infer....in this case is the coefficient for driver_age
real BIlmt_coeff; //parameters is what we want to infer....in this case is the coefficient for limit
real intercept; // parameter for mean or intercept
}
model {
driver_age_coeff ~ normal(0, 1);
BIlmt_coeff ~ norm(0, 1);
intercept ~ normal(0,5);
y1 ~ poisson(driver_age_coeff*driver_age + BIlmt_coeff*BIlmt + intercept - eunit);
}
"""
Thank you. And if I wanted to code a specific coefficient as an offset in the model (to account for a discount) would the correct way be
liability_code = """
data {
int<lower=0> N;
vector[N] driver_age;
vector[N] BIlmt;
vector[N] discount;
int<lower=0> y1[N];
}
parameters {
real driver_age_coeff; //parameters is what we want to infer....in this case is the coefficient for driver_age
real BIlmt_coeff; //parameters is what we want to infer....in this case is the coefficient for limit
real intercept; // parameter for mean or intercept
}
model {
driver_age_coeff ~ normal(0, 1);
BIlmt_coeff ~ norm(0, 1);
intercept ~ normal(0,5);
y1 ~ poisson(driver_age_coeff*driver_age + BIlmt_coeff*BIlmt + discount*.9 + intercept + eunit);
}
"""