2015-03-21 17 views
5

Qual è il modo corretto di formattare un predittore categoriale da utilizzare in STAN? Non riesco a inserire un predittore categoriale come una variabile fattore normale, quindi qual è il modo più rapido per trasformare una normale variabile categoriale in modo tale che STAN possa accettarla?Come rappresentare un predatore rtor categoriale?

Per esempio, dire che ho avuto un un predittore continuare ed un predittore categorica come questi:

 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 

Come dovrei preparare questo da inserire nel rstan?

risposta

11

È corretto che Stan immetta solo variabili reali o integeger. In questo caso, si desidera convertire un predittore categoriale in variabili fittizie (eventualmente escludendo una categoria di riferimento). In R, si può fare qualcosa di simile

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

Tuttavia, che potrebbe non uscire per il giusto numero di osservazioni se avete missingness non modellate su alcune altre variabili. Questo approccio può essere preso un passo avanti inserendo l'intera formula modello come

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

Ora, voi una intera matrice disegno di predittori che è possibile utilizzare in un programma .stan con algebra lineare, come

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 
} 

L'utilizzo di una matrice di progettazione è consigliato perché rende riutilizzabile il programma .stan con diverse varianti dello stesso modello o anche con set di dati diversi.