Hi
I am looking for a simple way to code in the generated quantities block for the probability of an outcome variable in a simple regression model being greater than a particular value of the outcome at a particular value of the predictor.
With this code, there are 2 separate datasets, with time_w and time_h being the predictors and logsf_w and logsf_h the outcomes.
So I want to know what is the (posterior predicted)probability of logsf_w being greater than say 5,when time_w is equal to say 0,or 10. And also the same for time_h and logsf_h.
The sigma values are given and fixed here.
model_string<-
"data {
int n1;
int n2;
vector[n1] time_h;
vector[n1] logsf_h;
real<lower=0> sigma_h;
vector[n2] time_w;
vector[n2] logsf_w;
real<lower=0> sigma_w;
}
parameters {
real beta0_h;
real beta1_h;
real beta0_w;
real beta1_w;
}
model {
vector[n1] mu_h;
vector[n2] mu_w;
beta0_h ~ normal(0,10);
beta1_h ~ normal(0,1);
beta0_w~ normal(0,10);
beta1_w~ normal(0,1);
mu_h = beta0_h+ beta1_h * time_h;
logsf_h ~ normal(mu_h, sigma_h);
mu_w = beta0_w+ beta1_w * time_w;
logsf_w ~ normal(mu_w, sigma_w);
}
generated quantities {
}
"
indent preformatted text by 4 spaces
Thanks for any help.
Chris
This makes perfect sense to do. Here’s some code:
generated quantities {
int indicator;
{
real mu_w = beta0_w + beta1_w * 10; // or whatever you want it to be, you might want to make the '10' a data array so you can change it easily
indicator = logsf_w > normal_rng(mu_w, sigma_w);
}
}
And you can look at the posterior estimates of the mean of indicator or whatever.
Thanks for replying. Unfortunately I get this error code:
Version:1.0 StartHTML:0000000107 EndHTML:0000003495 StartFragment:0000000127 EndFragment:0000003477
SYNTAX ERROR, MESSAGE(S) FROM PARSER: binary infix operator >= with functional interpretation logical_gt requires arguments or primitive type (int or real), found left type=vector, right arg type=real; No matches for: logical_gt(vector, real) Available argument signatures for logical_gt: logical_gt(int, int) logical_gt(int, real) logical_gt(real, int) logical_gt(real, real) Base type mismatch in assignment; variable name = indicator, type = int; right-hand side type=ill formed error in ‘model1cdc745f2e2e_ae3835deadb50045c89945352c8ee8d0’ at line 36, column 12 ------------------------------------------------- 34: { 35: real mu_w = beta0_w + beta1_w * 10; // or whatever you want it to be, you might want to make the ‘10’ a data array so you can change it easily 36: indicator = logsf_w > normal_rng(mu_w, sigma_w); ^ 37: } ------------------------------------------------- PARSER EXPECTED: <expression assignable to left-hand side> Error in stanc(file = file, model_code = model_code, model_name = model_name, : failed to parse Stan model ‘ae3835deadb50045c89945352c8ee8d0’ due to the above error.
Regards
Chris
Oh wow, that’s cause what I typed is wrong lol. Try this:
generated quantities {
int indicator;
{
real mu_w = beta0_w + beta1_w * 10; // or whatever you want it to be, you might want to make the '10' a data array so you can change it easily
indicator = normal_rng(mu_w, sigma_w) > 5; // Generate new logsf_w values and see if they're greater than 5
}
}
Thanks Ben-that works fine now.
Regards
Chris