2017-08-03 41 views
0

我有一個矩陣M以下觀察:在每1〜5組,每組30個觀測(行)(列)組約束

重現的代碼:

Simulate_phase_correction_isochronous<-function(N, nseq, alpha, st, sm) 
{ 
    As<-matrix(NA, nrow=N, ncol=nseq) 
    for(o in 1:nseq) 
    { 
    M=rnorm(N+2) 
    T=rnorm(N+2) 

    Z=st*T[1:(N+1)]-sm*M[2:(N+2)]+sm*M[1:(N+1)] 
    AA=rep(0,N+2) 
    for(I in 1:(N+1)) 
    { 
     AA[I+1]<-(1-alpha)*AA[I]+Z[I] 
    } 
    As[,o]<-AA[3:(N+2)] 
    } 
    As 
} 

set.seed(1) 
M<-Simulate_phase_correction_isochronous(N=30, nseq=5, a=0.5, st=10, sm=5) 

y=M[2:dim(M)[1],] 
x=M[1:(dim(M)[1]-1),] 

#wide to long 
data<-reshape2::melt(y); 
names(data)<-c("n", "group", "y") 
data$x<-melt(x)$value 

目標:我想估計方差和協方差的參數在lag - + 1。

這可以通過採用移動平均模型從GLS(名稱)函數來完成:

MA1.gls<-gls(y~x, data=data,corr=corARMA(q=1, form=~1|group), method="ML") 

我的問題: 如何設置的限制/在GLS功能限制,以便在特定條件得到滿足?例如:

2 *協方差<方差

+0

gls {name}應該是gls {nlme} – dom

回答

0

這可以通過優化的成型似然函數來實現,參見Pinheiro and Bates, 2000, p.202。點擊here爲我的R實現。

+0

歡迎來到SO。鏈接作爲答案是最好的評論而不是答案。我建議編輯上面的答案,從鏈接中添加主要部分,以便在上述鏈接死亡的情況下將它們放在一個地方。 – Syfer