 # Forecast Prediction distribution

I have the following forecast parameterization.

Forecast_h \sim normal(\bar{y}, \hat{\sigma}_{h} )

From a frequentist perspective \hat{\sigma}_{h} is:

\hat{\sigma}_{h} =\sqrt{\frac{1}{T-1}\sum_{t=1}^T e_t^2}\sqrt{1 + \frac{1}{T}}

I am struggling trying use this information to map to a Bayesian formula. In the frequentist specification all of the parameters are determined. How do I modify by stan program to be baysian?

data {
int<lower=0> N;
int<lower=0> N_horizon;
vector[N] y;
}

parameters {
real<lower=0> sigma;
}

model {
y ~ normal(mean(y), sigma);
}

generated quantities {

vector[N_horizon] forecast;
for (T in 1:N_horizon){
forecast[T] = normal_rng(mean(y), sigma * sqrt(1+(1/T)));
}

}



This is one option which does not use any estimated parameters. All this code chunk does is generate a quantity. This is not exactly what I am looking for, but this is the frequentist idea. I am still open to any Bayesian parameterization. Also, is there a way to pull the generated quantities with there no model is fit. I am using CmdStanPy

data {
int<lower=0> N;
int<lower=0> N_horizon;
vector[N] y;
}

/*
parameters {
real<lower=0> sigma;
}

model {
y ~ normal(mean(y), sigma);
}
*/

generated quantities {
vector[N_horizon] forecast;
for (T in 1:N_horizon){
forecast[T] = normal_rng(
mean(y),sqrt((1/(T - 1))*sum(pow(mean(y) - y,2)))*(sqrt(1 + (1/T))));
}

}



It turns out that my confusion came from a misunderstanding of the subscripts. It makes more sense now.

This is my solution

data {
int<lower=0> T;
int<lower=0> horizon;
vector[T] y;
}

parameters {
real<lower=0> sigma;
}

model {
y ~ normal(mean(y), sigma);
}

generated quantities {
vector[horizon] forecast;
for (h in 1:horizon){
forecast[h] = normal_rng(mean(y),sigma * sqrt(1 + (1/T)));
}

}


3 Likes