2015-03-21 4 views
5

Каков правильный способ форматирования категориального предиктора для использования в STAN? Я не могу представить категориальный предиктор как нормальную переменную фактора, так что самый быстрый способ преобразовать нормальную категориальную переменную, чтобы STAN мог ее принять?Как представить категориальный предиктор?

Например, сказать, что я продолжения, предсказатель и категорическое предсказатель, как эти:

 income  country 
1 62085.59  England 
2 60806.33  England 
3 60527.27  England 
4 67112.64   USA 
5 57675.92   USA 
6 58128.44   USA 
7 60822.47 South Africa 
8 55805.80 South Africa 
9 63982.99 South Africa 
10 64555.45  Belgium 

Как бы подготовить это ввести в rstan?

ответ

11

Верно, что Стэн вводит только реальные или интегральные переменные. В этом случае вы хотите преобразовать категориальный предиктор в фиктивные переменные (возможно, исключая ссылочную категорию). В R, вы можете сделать что-то вроде

dummy_variables <- model.matrix(~ country, data = your_dataset) 

Однако, что не может выйти на нужное число наблюдений, если у вас есть unmodeled missingness на некоторых других переменных. Такой подход может быть сделан шаг дальше, вводя всю модельную формулу, как

X <- model.matrix(outcome ~ predictor1 + predictor2 ..., data = your_dataset) 

Теперь у вас есть вся конструкция матрицы предсказателей, которые можно использовать в .stan программы с линейной алгебры, такие как

data { 
    int<lower=1> N; 
    int<lower=1> K; 
    matrix[N,K] X; 
    vector[N] y; 
} 
parameters { 
    vector[K] beta; 
    real<lower=0> sigma; 
} 
model { 
    y ~ normal(X * beta, sigma); // likelihood 
    // priors 
} 

Рекомендуется использовать матрицу дизайна, поскольку она делает вашу программу .stan повторно используемой с различными вариантами одной и той же модели или даже с различными наборами данных.