ฉันต้องการให้พอดีกับ DLM ด้วยค่าสัมประสิทธิ์การแปรผันของเวลานั่นคือส่วนขยายของการถดถอยเชิงเส้นปกติ
.
ฉันมีผู้ทำนาย () และตัวแปรตอบกลับ () จับปลาประจำปีทางทะเลและในทะเลตามลำดับตั้งแต่ปี 1950 - 2011 ฉันต้องการให้โมเดลการถดถอย DLM ปฏิบัติตาม
สมการวิวัฒนาการของระบบอยู่ที่ไหน
จากหน้า 43 ของโมเดลเชิงเส้นไดนามิกพร้อม R โดย Petris และคณะ
บางรหัสที่นี่
fishdata <- read.csv("http://dl.dropbox.com/s/4w0utkqdhqribl4/fishdata.csv", header=T)
x <- fishdata$marinefao
y <- fishdata$inlandfao
lmodel <- lm(y ~ x)
summary(lmodel)
plot(x, y)
abline(lmodel)
ค่าสัมประสิทธิ์การเปลี่ยนแปลงเวลาที่ชัดเจนของแบบจำลองการถดถอยมีความเหมาะสมมากกว่าที่นี่ ฉันทำตามตัวอย่างของเขาจากหน้า 121 - 125 และต้องการใช้สิ่งนี้กับข้อมูลของฉันเอง นี่คือการเข้ารหัสจากตัวอย่าง
############ PAGE 123
require(dlm)
capm <- read.table("http://shazam.econ.ubc.ca/intro/P.txt", header=T)
capm.ts <- ts(capm, start = c(1978, 1), frequency = 12)
colnames(capm)
plot(capm.ts)
IBM <- capm.ts[, "IBM"] - capm.ts[, "RKFREE"]
x <- capm.ts[, "MARKET"] - capm.ts[, "RKFREE"]
x
plot(x)
outLM <- lm(IBM ~ x)
outLM$coef
acf(outLM$res)
qqnorm(outLM$res)
sig <- var(outLM$res)
sig
mod <- dlmModReg(x,dV = sig, m0 = c(0, 1.5), C0 = diag(c(1e+07, 1)))
outF <- dlmFilter(IBM, mod)
outF$m
plot(outF$m)
outF$m[ 1 + length(IBM), ]
########## PAGES 124-125
buildCapm <- function(u){
dlmModReg(x, dV = exp(u[1]), dW = exp(u[2:3]))
}
outMLE <- dlmMLE(IBM, parm = rep(0,3), buildCapm)
exp(outMLE$par)
outMLE
outMLE$value
mod <- buildCapm(outMLE$par)
outS <- dlmSmooth(IBM, mod)
plot(dropFirst(outS$s))
outS$s
ฉันต้องการที่จะสามารถวางแผนการประมาณที่ราบรื่นplot(dropFirst(outS$s))
สำหรับข้อมูลของตัวเองซึ่งฉันมีปัญหาในการดำเนินการ
UPDATE
ตอนนี้ฉันสามารถสร้างแปลงเหล่านี้ได้ แต่ฉันไม่คิดว่ามันถูกต้อง
fishdata <- read.csv("http://dl.dropbox.com/s/4w0utkqdhqribl4/fishdata.csv", header=T)
x <- as.numeric(fishdata$marinefao)
y <- as.numeric(fishdata$inlandfao)
xts <- ts(x, start=c(1950,1), frequency=1)
xts
yts <- ts(y, start=c(1950,1), frequency=1)
yts
lmodel <- lm(yts ~ xts)
#################################################
require(dlm)
buildCapm <- function(u){
dlmModReg(xts, dV = exp(u[1]), dW = exp(u[2:3]))
}
outMLE <- dlmMLE(yts, parm = rep(0,3), buildCapm)
exp(outMLE$par)
outMLE$value
mod <- buildCapm(outMLE$par)
outS <- dlmSmooth(yts, mod)
plot(dropFirst(outS$s))
> summary(outS$s); lmodel$coef
V1 V2
Min. :87.67 Min. :1.445
1st Qu.:87.67 1st Qu.:1.924
Median :87.67 Median :3.803
Mean :87.67 Mean :4.084
3rd Qu.:87.67 3rd Qu.:6.244
Max. :87.67 Max. :7.853
(Intercept) xts
273858.30308 1.22505
การประมาณค่าการสกัดแบบเรียบ (V1) นั้นอยู่ไกลจากค่าสัมประสิทธิ์การถดถอย lm ฉันคิดว่าพวกเขาควรจะใกล้กันมากขึ้น
lmodel$coef
ค่าประมาณ ฉันคิดว่าแปลงไม่ถูกต้อง แต่ฉันคิดผิด