У меня есть следующая модель:
Буду признателен, если кто-нибудь сможет продемонстрировать, как реализовать эту модель.
Исследование и попытка
В качестве примера я рассмотрел следующий пример Poisson GLM:
```{stan output.var="PoissonGLMQR"}
data{
int<lower=1> n; // number of observations
int<lower=1> p; // number of predictors
matrix[n, p] x; // design matrix
int<lower=0> y[n]; // responses
} transformed data{
matrix [n, p] Q_ast;
matrix [p, p] R_ast;
matrix [p, p] R_ast_inverse;
Q_ast = qr_Q(x)[,1:p] * sqrt(n - 1.0);
R_ast = qr_R(x)[1:p,] / sqrt(n - 1.0);
R_ast_inverse = inverse(R_ast);
} parameters{
vector[p] theta; // regression coefficients for predictors
} transformed parameters{
vector[p] beta;
vector[n] mu;
mu = exp(Q_ast*theta);
beta = R_ast_inverse * theta;
} model{
y ~ poisson(mu);
}
```
Я понимаю, что в этом примере была использована репараметризация QR (см. раздел 9.2 справочника Stan руководство). Однако, поскольку я новичок в Стэне, я нахожу это довольно запугивающим, и я не уверен, как реализовать экспоненциальный GLM таким же образом. Нужно ли даже использовать репараметризацию QR для экспоненциального случая?
Во всяком случае, моя наивная попытка экспоненциального GLM - это следующая адаптация кода Poisson GLM:
```{stan output.var="ExponentialGLM"}
data{
int<lower=1> n; // number of observations
int<lower=1> p; // number of predictors
matrix[n, p] x; // design matrix
real<lower=0> y[n]; // responses
} transformed data{
matrix [n, p] Q_ast;
matrix [p, p] R_ast;
matrix [p, p] R_ast_inverse;
Q_ast = qr_Q(x)[,1:p] * sqrt(n - 1.0);
R_ast = qr_R(x)[1:p,] / sqrt(n - 1.0);
R_ast_inverse = inverse(R_ast);
} parameters{
vector[p] theta; // regression coefficients for predictors
} transformed parameters{
vector[p] beta;
vector[n] mu;
mu = exp(Q_ast*theta);
beta = (R_ast_inverse * theta);
} model{
y ~ exponential(mu);
}
```
Но, как я уже сказал, я совершенно не уверен, что это даже правильный способ кодирования такой модели в Стэне. Все, что я сделал, это просто попытаться адаптировать пример poisson GLM к вышеупомянутому экспоненциальному GLM.
Я был бы признателен, если бы кто-то мог продемонстрировать экспоненциальный GLM и, если это не слишком много проблем , пожалуйста, найдите время, чтобы разъяснить мои недоразумения выше.
Примеры данных
conc time
1 6.1 0.8
2 4.2 3.5
3 0.5 12.4
4 8.8 1.1
5 1.5 8.9
6 9.2 2.4
7 8.5 0.1
8 8.7 0.4
9 6.7 3.5
10 6.5 8.3
11 6.3 2.6
12 6.7 1.5
13 0.2 16.6
14 8.7 0.1
15 7.5 1.3
Как насчет чего-то подобного?
Начнем с чтения данных образца.
Мы определяем модель Стэна как простую модель Гамма (экспоненциальная) с лог-линией.
Здесь я предполагаю (стандартное) слабо информативное поведение Коши на бета-модели параметры.
Теперь мы сопоставим модель с данными.
Чтобы сравнить оценки точек , мы также сопоставляем Gamma GLM с данными с помощью
glm
.Оценки параметров модели Stan
Оценки параметров модели GLM:
Мы видим хорошее совпадение оценок Стэна для средств и оценок параметров Gamma-GLM.
Мы оцениваем оценки параметров как из моделей Stan, так и
glm
.glm
показаны красным цветом.Обновить (модель Fit Stan с использованием повторной параметризации QR)
Модель Стэна с повторной параметризацией QR.
В QR-декомпозиции мы имеем
lambda = exp(- X * beta) = exp(- Q * R * beta) = exp(- Q * theta)
, гдеtheta = R * beta
и, следовательно,beta = R^-1 * theta
.Обратите внимание, что мы не указываем никаких приуров на тете; в Stan это значение по умолчанию равномерным (то есть равномерным) приоритетам.
Примените модель модели к данным.
Оценки параметров
Вы можете видеть, что оценки параметров между двумя моделями Stan (с и без повторной параметризации QR) очень хорошо согласуются.
Если бы вы спросили меня, изменит ли QR re-parametrisation (большую / любую) разницу, я бы сказал, "возможно, не в этом случае"; Эндрю Гельман и другие часто подчеркивали, что использование даже очень слабых информативных пригородов будет способствовать сближению и должно быть предпочтительным по сравнению с плоскими (равномерными) призваниями; Я всегда старался использовать слабоинформативные приставки по всем параметрам и начинать с модели без повторной параметризации QR; если сходимость плохой, я бы попытался оптимизировать свою модель на следующем шаге.
lambda = exp(-X * beta)
. Если я не ошибаюсь, эта бета соответствует бета_1 в описании модели. Что относительно бета_0?beta[1]
соответствует смещению (ваш бета_0); Стэн использует индексирование на основе 1, а не на основе 0 (с хорошим побочным эффектом, более совместимым с R). Я добавил график, который показывает сравнение оценок параметров как из моделей Stan, так иglm
. (2) Что касается репараметризации QR. Я не эксперт в этом, но из того, что я понимаю, репараметризация QR может помочь ускорить процесс выборки. Это стратегия оптимизации, которая помогает, в частности, если у вас есть плоские приоритеты. [...]Rhat
). Поэтому мне жаль, что я не могу дать более полный ответ по этому вопросу. Возможно, кто-то из команды Rstan / Stan может дать представление; Я знаю, что они контролируют SO для вопросов, связанных с Стэном; или, возможно, задать отдельный вопрос на форумах Stan Google.K
). [...]