2017-08-07 26 views
1

可以說我有一個表格y=a_{i} + b_{i,1}*x_{1} + b_{2}*x_{2}模型,其中i=1,2,...,12和我想估計這個模型使用rstanarm如何把不同的先輩使用rstanarm

是否有可能爲每個攔截a_{i}設置不同的先驗(因此可以說,前4個具有normal(location = 0, scale = 1, autoscale = TRUE),在接下來的4有normal(location = 1, scale = 2, autoscale = TRUE),最後4 student_t(df = 1, location = 0, scale = NULL, autoscale = TRUE))。我還想爲b_{i,1}和最後b_{2}~normal(location = 3, scale = 1, autoscale = TRUE)設置相同的前綴。

是否有可能用rstanarm做到這一點?

回答

2

有由rstanarm支持機型最多一個監聽,但是可以通過包括-1公式中,並在虛擬變量係數處理係數抑制攔截。對於係數,您可以執行如下操作: prior = student_t(df = c(rep(Inf, 8), rep(1, 4)), location = c(rep(0, 4), rep(1, 4), rep(0, 4)), scale = c(rep(1, 4), rep(2, 4), rep(1, 4)), autoscale = TRUE) 但是您似乎打算使用某種分層模型,在這種情況下,偏離全局參數的先驗值只能是多元正態分佈。見?prior_decov

+0

謝謝你的回答。 ** 1)**如果我理解正確,加入「-1」也不會導致多重共線性,對嗎?這只是解釋的變化。 ** 2)**我想用我的例子說的是,如果你可以代替具有位置和尺度參數的矢量,也可以傳遞具有不同分佈的矢量(如果我錯了,請糾正我,但是在你的答案中,你通過操縱df將t分佈轉化爲正常 – quant

+0

是的,在R公式中有'-1'或'+ 0'可以刪除截距,因此它可以包含一個因子級別作爲虛擬變量。 –

+1

不,在** rstanarm **包中,不能將函數的列表或字符向量傳遞給'prior'參數。您只能將'location','scale','df'等向量傳遞給'student_t'等函數。然而,因爲當自由度是無限時,'student_t'等同於'normal'',這相當於在你最初給出的例子中使用「不同的」函數。通過** brms ** R軟件包中的'brm'函數,您可以爲Stan估計的模型中的不同參數指定不同的先前系列。 –