SSブログ

R: KFAS 1.0.4-1による一部の状態のとりだし [統計]

KFASによる状態空間モデルの解析。生態学会のときはpredict()states引数で状態を指定して、過去のデータについて予測をおこなうというふうにしていたのですが、KFAS 1.0.4-1ではpredict()statesの指定が有効でないみたい。マニュアルをよく読むと、こういうときはsignal()をつかうほうがよいのかも。

# 生態学会のときのスライドも、いまからみるといろいろ手直ししたいところがありますなあ。

KFS()で平滑化して、signal()statesで、状態を指定する。

###
### KFASによる、ポアソン分布の状態空間モデルの解析例
###
### 例題は、help(KFAS)より。
###
### Jouni Helske (2014). KFAS: Kalman Filter and Smoother for
### Exponential Family State Space Models.
### R package version 1.0.4-1.
### http://CRAN.R-project.org/package=KFAS
###

## KFASとggplot2を使用
library(KFAS)
library(ggplot2)

## データにはSeatbeltsを使用
data(Seatbelts)

## モデル定義
## VanKilled: バン運転手の死者数
## law: シートベルト義務化の前後をしめす変数
model.van <- SSModel(VanKilled ~ law +
                     SSMtrend(degree = 1, Q = list(matrix(NA))) +
                     SSMseasonal(period = 12, sea.type = "dummy", Q = NA),
                     data = Seatbelts, distribution = "poisson")

## 分散Qを最尤推定
fit.van <- fitSSM(model = model.van, inits = c(-4, -7, 2))

## カルマンスムーザー適用と、トレンドおよび回帰の状態のとりだし
out.van <- KFS(fit.van$model, smoothing=c("state"))
sig.van <- signal(out.van, states = c("trend", "regression"))

p <- ggplot(data.frame(Year = seq(start(Seatbelts)[1],
                                  end(Seatbelts)[1] + 11/12, 1 / 12),
                       VanKilled = c(Seatbelts[, "VanKilled"]),
                       Smooth = exp(c(sig.van$signal))))
p + geom_point(aes(x = Year, y = VanKilled)) +
    geom_line(aes(x = Year, y = VanKilled)) +
    geom_line(aes(x = Year, y = Smooth), colour = "gray35", size = 1.2) +
    ylab("No. of van drivers") +
    theme_bw(12, "Helvetica")

結果

Rplot.png


タグ:R
nice!(2)  コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

nice! 2

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0