3# reolin
是的,频率的方法处理很复杂。
试试贝叶斯,假设确实的概率依赖于当前的Yt,Yt为正和为负确实概率不同。---其他确实机制也可以。
以下的模拟结果还不错,R调用WinBUGS实现。
N = 2000
ar = c(0.9, -0.5)
data = arima.sim(n = N, list(ar = ar))
data = as.vector(data)
misp = ifelse(data>0, 0.1, 0.3)
R = sapply(misp, function(p){rbinom(1, 1, p)})
Y = ifelse(R==1, NA, data)
model = function()
{
Y[1]~dnorm(mu[1], sigmainv)
mu[1]<-a1*Y1+a2*Y2
Y[2]~dnorm(mu[2], sigmainv)
mu[2]<-a1*Y2+a2*Y[1]
p[1]<-pp*step(Y[1])+pn*(1-step(Y[1]))
R[1]~dbern(p[1])
p[2]<-pp*step(Y[2])+pn*(1-step(Y[2]))
R[2]~dbern(p[2])
for(i in 3:N)
{
Y
~dnorm(mu, sigmainv)
mu<-a1*Y[i-1]+a2*Y[i-2]
R~dbern(p)
p<-pp*step(Y)+pn*(1-step(Y))
}
a1~dnorm(0,0.00001)
a2~dnorm(0,0.00001)
sigmainv~dgamma(0.0001,0.0001)
sigma<-1/sigmainv
pp~dunif(0,1)
pn~dunif(0,1)
}