2017-10-28 65 views
0

一個情節我還在學習更多關於BSTS包,所以我,使用R AirPassengers DataSet和學習沿預測創建BSTS型號,如何繪製之前,對數似然和後使用BSTS包裝來自R

###library(lubridate) 

###library(bsts) 

###library(dplyr) 

###library(ggplot2) 

###Load the data 

data("AirPassengers") 

Y <- window(AirPassengers, start=c(1949, 1), end=c(1959,12)) 

ss <- AddLocalLinearTrend(list(), Y) 

ss <- AddSeasonal(ss, Y, nseasons = 12) 

bsts.model <- bsts(Y, state.specification = ss, niter = 500, ping=0, seed=2016) 

burn <- SuggestBurn(0.1, bsts.model) 

p <- predict.bsts(bsts.model, horizon = 12, burn = burn, quantiles = c(.025, .975)) 

我發現,當我看得更遠bsts.model,bsts.model $之前返回我這樣

Prior returning only 1 value

然後bsts.model$log.likelihood

東西

BSTS Model Log.Likelihood with 500 MCMC draws

而在去年P $分佈,我知道作爲後驗分佈是這樣的

Posterior distribution with 473 MCMC after burn each for month

,什麼我想知道:

爲什麼事先只給這一個值,而不是分銷?是否可以將這些繪製成一張照片/情節?

我檢查AirPassengers數據集使用EasyFit軟件,那麼結果就被安裝到這些參數ibb.co/dxwrvm Beta分佈,但我想知道更多,如果我可以用R請勿這些..

三江源在Advance

[編輯 - 2017年11月18日] ------------------------------------ --------------------

下面我只能繪製可能性和後驗之間的陰謀,因爲我仍然無法得到先前的想法來自:

情節(密度(ρ$分佈))

線(密度(AirPassengers),類型= 「L」)

Result Plotting

如果我定義自己的前,我將使用隨機噸用RT(1000,12,650) 分佈,其中它產生1000次迭代,用df = 12,和中央線= 650,它將匹配整個曲線圖是這樣的:

drawt =室溫(1000,12,650)

線(密度(drawt))

with own prior definition

所以它清楚地看到,該現有(右側)X似然(左側)曾經創建這些後驗分佈,但BSTS包而不我可以生成後我定義任何事先......有人可以幫我解釋一下嗎?

(我已經在搜索Steve提到的state.specification,但它只是給了我一些趨勢和季節的previous.guess的列表,它仍然很難理解先前的分佈來自哪裏,如果有的話請給我更多的代碼實例)

回答

0

所以我最近做大量的研究與試錯和谷歌搜索, ,我發現使用貝葉斯比別人更有用此研究中,我曾經看到

http://sisifospage.tech/2017-10-30-forecasting-bsts.html

,並讓我自己的結論,即到預測這些(先前的數據可能性,後驗)爲如下的一個圖:

plot(density(bsts.model $ one.step.prediction.error),xlim = c(-100,1000),ylim = c(0,0.035)) //這些表示之前我假設

線(密度(ρ$分佈)) //這些表示後驗分佈

線(密度(AirPassengers)) //這些表示數據似然

,結果我得到的東西像這樣:

Results

不過[糾正我,如果我錯了]

我在R的幫助中讀到了Prior,並且我發現了這些說法[如果模型不包含迴歸因子,那麼這僅僅是殘差標準差的先驗值,表示爲由SdPrior創建的對象],但是SdPrior是唯一的數字對象,

和sisifospage.tech確實給出了詳細的解釋如何使用SdPrior來製作一個趨勢組件,然後我知道這些SdPrior及其兄弟是爲了創建之前的趨勢組件的參數,並且最終結果包含在one.step.prediction.error中的bsts模型中作爲分析殘差。

0

先驗是先驗的觀察方差。它是一個具有先驗的反向伽馬分佈,預測爲標準偏差,先驗分佈爲先驗樣本量。請參閱SdPrior的幫助頁面。

我不確定你的意思是「beta distribution」。 β分佈是[0,1]上的分佈(即它是支持)。你可能意思是「在'beta'上的分佈(即迴歸係數),但在這個例子中這是沒有意義的,因爲你適合的模型沒有迴歸係數。

另請注意,狀態模型的參數存在(獨立的)先驗分佈。由於您使用的兩種狀態模型都是隨機遊動的組合,因此這些模型的唯一參數是隨機遊動中各個錯誤項的方差,因此這些也將是伽馬分佈。你可以通過檢查bsts.model $ state.specification來找到這些先前的分佈。它是您在bsts調用中傳遞的state.specification參數的副本。在你的情況下,它是一個包含兩個元素的列表,一個用於狀態的每個組成部分(趨勢和季節)。

+0

Thankyou先生,我注意到你的回覆,我搜索了bsts.model $ state.specification,就像你說的Steve先生,我總結了這些:http://ibb.co/dJGuqw,你能解釋一些更多解釋一個和另一個有什麼區別?我的意思是什麼是不同initial.level.prior與initial.slope.prior是什麼?等等......這是指回歸係數?謝謝你,史蒂夫先生 –

相關問題