2017-12-26 5 views
0

Ich versuche ein lineares Modell in rtanarm unter Verwendung der hierarchischen Schrumpfung vorher anzupassen. Ich jedoch eine Fehlermeldung erhalten, dass die Lage des Standes der Angabe muss größer sein als 0.rtanarm Vorheriger Standort muss größer sein als 0

Error: location > 0 is not TRUE 

Ich bin ein bisschen überrascht, da die hs() vor keinen Positionsparameter hat. Ich habe versucht, das gleiche Modell mit einem normalen Standard vor, und ich bekomme den gleichen Fehler, der mir nicht viel Sinn macht, da 0 zentrierte priors die Standardoption sind.

Ich habe die stan_lm.R und stan_lm.fit.R Dateien in den Github-Repositorys angeschaut, und ich konnte die Quelle des Fehlers nicht finden.

Below I-Code enthalten, den Fehler zu reproduzieren, bitte beachten Sie, dass die Wahl des Priors in diesem Beispiel nicht sehr adecuate sein könnte, aber der einzige Zweck dieses Stück des Codes, den Fehler zu veranschaulichen, erhalte ich:

library(rstanarm) 
library(tidyverse) 
library(MASS) 
nObs <- 400 
x <- mvrnorm(n = nObs, mu = c(0, 0, 0), 
      diag(c(0.5, 1, 2))) 
y <- (x %*% c(0.3, 0.4, 0.5)) + rnorm(n = nObs, 0, 1) 
fullData <- cbind(y, x) %>% as.data.frame 

model0 <- stan_lm(y ~ -1 + x, data = fullData, 
        prior = normal(location = 0, scale = 1)) 
model1 <- stan_lm(y ~ -1 + x, data = fullData, 
        prior = hs(df = 1, global_df = 1, global_scale = 0.01, 
          slab_df = 4, slab_scale= 2.5)) 

Antwort

2

Verwenden Sie stan_glm, um zu Ihrem normalen linearen Modell zu passen. Die stan_lm Funktion erfordert die vorher auf R^2, nicht die Regressionskoeffizienten angegeben - daher muss die Position> 0 sein.

Weitere Informationen finden Sie in der Dokumentation des Parameters prior unter stan_lm.

Verwandte Themen