2017-08-03 6 views
0

Je les observations suivantes dans une matrice M: 30 observations (ligne) dans chacun de 1 à 5 groupes (colonnes)contraintes définies sur les paramètres de la fonction de GLS {nom}

de code reproductible:

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 

Objectif: Je souhaite estimer les paramètres de la variance et la covariance à la traînée - + 1.

Cela peut être fait en utilisant un modèle de la moyenne mobile de la fonction gls {name}:

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

Ma question: dans la fonction gls Comment puis-je définir des contraintes/limites afin que certaines conditions sont réunies ? par exemple:

2 * covariance < variance

+0

gls {nom} devrait être gls {nlme} – dom

Répondre

0

Ceci peut être réalisé en optimisant une fonction de vraisemblance profilée, voir Pinheiro and Bates, 2000, p.202. Cliquez sur here pour ma mise en œuvre R.

+0

Bienvenue à SO. Lien comme réponses sont les meilleurs pour les commentaires et non les réponses. Je suggère d'éditer la réponse ci-dessus pour ajouter les parties principales du lien donc c'est dans un endroit si/quand les liens ci-dessus meurent. – Syfer