在gls {name}函数中设置参数约束

时间:2017-08-03 14:45:05

标签: matrix constraints nlme

我在矩阵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 

目标:我想估计方差的参数和滞后时的协方差 - + 1。

这可以通过使用gls {name}函数中的移动平均模型来完成:

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

我的问题: 如何在gls函数中设置约束/限制以满足特定条件?例如:

2 *协方差&lt;差异

1 个答案:

答案 0 :(得分:0)

这可以通过优化分析似然函数来实现,请参阅Pinheiro and Bates, 2000, p.202。点击here进行我的R实施。