एक अलग-अलग गुणांक DLM फिटिंग


9

मैं समय-भिन्न गुणांक वाले एक डीएलएम को फिट करना चाहता हूं, अर्थात सामान्य रेखीय प्रतिगमन का विस्तार,

yटी=θ1+θ2एक्स2

मेरे पास एक भविष्यवक्ता है (एक्स2) और एक प्रतिक्रिया चर (yटी), 1950 से 2011 तक क्रमशः समुद्री और अंतर्देशीय वार्षिक मछली पकड़ता है। मैं चाहता हूं कि DLM प्रतिगमन मॉडल का पालन करें,

yटी=θटी,1+θटी,2एक्सटी

जहां प्रणाली विकास समीकरण है

θटी=जीटीθटी-1

पेट्रीस एट अल द्वारा डायनामिक लीनियर मॉडल्स विथ आर के पेज 43 से।

कुछ कोडिंग यहाँ,

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)

प्रतिगमन मॉडल के स्पष्ट रूप से अलग-अलग गुणांक यहां अधिक उपयुक्त हैं। मैं १२१ - १२५ पृष्ठों से उनके उदाहरण का अनुसरण करता हूं और इसे अपने स्वयं के डेटा पर लागू करना चाहता हूं। यह उदाहरण से कोडिंग है

############ 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))अपने स्वयं के डेटा के लिए चौरसाई अनुमानों को प्लॉट करने में सक्षम होना चाहता हूं , जिसे निष्पादित करने में मुझे परेशानी हो रही है।

अपडेट करें

मैं अब इन भूखंडों का उत्पादन कर सकता हूं लेकिन मुझे नहीं लगता कि वे सही हैं।

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 प्रतिगमन गुणांक से बहुत दूर है। मुझे लगता है कि वे एक दूसरे के निकट होना चाहिए।

जवाबों:


2

आपकी समस्या क्या है?

मैंने पाया कि एकमात्र नुकसान, जाहिरा तौर पर,

fishdata <- read.csv("http://dl.dropbox.com/s/4w0utkqdhqribl4,
                     fishdata.csv", header=T)

डेटा को पूर्णांक के रूप में पढ़ता है। मुझे उन्हें तैरने के लिए बदलना पड़ा,

x <- as.numeric(fishdata$marinefao)
y <- as.numeric(fishdata$inlandfao)

इससे पहले कि मैं dlm * फ़ंक्शंस को लागू कर सकता।


आपके सुझावों के लिए धन्यवाद @ एफ। Tusell; मैंने अपना प्रश्न अपडेट कर दिया है। उत्पादित चौरसाई अनुमान अनुमान के करीब नहीं हैं lmodel$coef। मुझे लगता है कि प्लॉट गलत हैं लेकिन मैं गलत हो सकता हूं।
hgeop

1
रैखिक प्रतिगमन में निश्चित बेटों के करीब होने के लिए ढलान और अवरोधन के सहज अनुमानों की अपेक्षा करने का कोई कारण नहीं है। विशेष रूप से, ढलान में बेतहाशा उतार-चढ़ाव होना चाहिए।
एफ। टुसेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.