Skip to content

Instantly share code, notes, and snippets.

@wfolta
Last active December 25, 2015 13:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wfolta/6982892 to your computer and use it in GitHub Desktop.
Save wfolta/6982892 to your computer and use it in GitHub Desktop.
Stan Code for electricity usage model
stan.code <-
"data
{
int cut ;
int nu ;
int N ;
real dollars[N] ;
real dca[N] ;
int rate[N] ;
int regime[N] ;
}
transformed data
{
real dcaX[N] ;
int ratetemp[N] ;
for (n in 1:N)
{
dcaX[n] <- dca[n] - cut ;
if (dcaX[n] < 0)
{ ratetemp[n] <- 1 ; }
else if (rate[n] == 1)
{ ratetemp[n] <- 2 ; }
else
{ ratetemp[n] <- 3 ; }
}
}
parameters
{
real alpha[3] ; // intercept, per ratetemp
real alpha_alpha ;
real alpha_sigma ;
real beta[3] ; // slope, per ratetemp
real beta_alpha ;
real beta_sigma ;
real gamma[5] ; // intercept, per regime
real gamma_alpha ;
real gamma_sigma ;
real sigma[3] ;
real sigma_alpha ;
real sigma_sigma ;
}
model
{
alpha ~ normal (alpha_alpha, alpha_sigma) ;
alpha_alpha ~ normal (570, 150) ;
alpha_sigma ~ cauchy (0, 70) ;
beta ~ normal (beta_alpha, beta_sigma) ;
beta_alpha ~ normal (0, 15) ;
beta_sigma ~ cauchy (0, 10) ;
gamma ~ normal (gamma_alpha, gamma_sigma) ;
gamma_alpha ~ normal (0, 5) ;
gamma_sigma ~ cauchy (0, 80) ;
sigma ~ cauchy (sigma_alpha, sigma_sigma) ;
sigma_alpha ~ cauchy (0, 40) ;
sigma_sigma ~ cauchy (0, 5) ;
for (n in 1:N)
{
dollars[n] ~ normal (gamma[regime[n]] + alpha[ratetemp[n]] + beta[ratetemp[n]] * dcaX[n], sigma[ratetemp[n]]) ;
// dollars[n] ~ student_t (nu, gamma[regime[n]] + alpha[ratetemp[n]] + beta[ratetemp[n]] * dcaX[n], sigma[ratetemp[n]]) ;
}
}
"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment