정상 분포와 로그 정규 분포를 혼합 한 모델을 만들어야합니다. 그것을 만들기 위해서, 로그 가능성 함수 (log-likelihood function)를 최대화하여 2 개의 공분산 행렬과 혼합 매개 변수 (총 = 7 개의 매개 변수)를 추정해야합니다. 이 최대화는 nlm 루틴에 의해 수행되어야합니다. 내가 상대 데이터를 사용하는 것처럼, 수단 알려진 1.이항 변수 정규 분포 정규 분포 정규 분포 모형의 파라미터 추정
동일 이미 1 개 차원에서 그것을 시도했다 (상대의 데이터를 1 개 세트로) 그것은 잘 작동하는
. 그러나 두 번째 상대 데이터 세트를 소개 할 때 상관 관계에 대한 비논리적 인 결과와 많은 경고 메시지 (모두 25 개)가 표시됩니다.
이 매개 변수를 계산하기 위해 먼저 dmvnorm 및 dlnorm.plus 명령을 사용하여 로그 가능성 함수를 정의했습니다. 그런 다음 매개 변수의 시작 값을 지정하고 마지막으로 nlm 루틴을 사용하여 매개 변수를 추정합니다 (아래 스크립트 참조).
`P <- read.ascii.grid("d:/Documents/JOINT_FREQUENCY/grid_E727_P-3000.asc", return.header=
FALSE);
V <- read.ascii.grid("d:/Documents/JOINT_FREQUENCY/grid_E727_V-3000.asc", return.header=
FALSE);
p <- c(P); # tranform matrix into a vector
v <- c(V);
p<- p[!is.na(p)] # removing NA values
v<- v[!is.na(v)]
p_rel <- p/mean(p) #Transforming the data to relative values
v_rel <- v/mean(v)
PV <- cbind(p_rel, v_rel) # create a matrix of vectors
L <- function(par,p_rel,v_rel) {
return (-sum(log((1- par[7])*dmvnorm(PV, mean=c(1,1), sigma= matrix(c(par[1]^2, par[1]*par[2]
*par[3],par[1]*par[2]*par[3], par[2]^2),nrow=2, ncol=2))+
par[7]*dlnorm.rplus(PV, meanlog=c(1,1), varlog= matrix(c(par[4]^2,par[4]*par[5]*par[6],par[4]
*par[5]*par[6],par[5]^2), nrow=2,ncol=2)) )))
}
par.start<- c(0.74, 0.66 ,0.40, 1.4, 1.2, 0.4, 0.5) # log-likelihood estimators
result<-nlm(L,par.start,v_rel=v_rel,p_rel=p_rel, hessian=TRUE, iterlim=200, check.analyticals= TRUE)
Messages d'avis :
1: In log(eigen(sigma, symmetric = TRUE, only.values = TRUE)$values) :
production de NaN
2: In sqrt(2 * pi * det(varlog)) : production de NaN
3: In nlm(L, par.start, p_rel = p_rel, v_rel = v_rel, hessian = TRUE) :
NA/Inf replaced by maximum positive value
4: In log(eigen(sigma, symmetric = TRUE, only.values = TRUE)$values) :
production de NaN
…. Until 25.
par.hat <- result$estimate
cat("sigN_p =", par[1],"\n","sigN_v =", par[2],"\n","rhoN =", par[3],"\n","sigLN_p =", par [4],"\n","sigLN_v =", par[5],"\n","rhoLN =", par[6],"\n","mixing parameter =", par[7],"\n")
sigN_p = 0.5403361
sigN_v = 0.6667375
rhoN = 0.6260181
sigLN_p = 1.705626
sigLN_v = 1.592832
rhoLN = 0.9735974
mixing parameter = 0.8113369`
누군가가 내 모델의 잘못 또는 어떻게 2 개 차원에서 이러한 매개 변수를 찾기 위해 무엇을해야하는지 알고 있나요?
제 질문에 시간을내어 주셔서 대단히 감사합니다. 내가 최적화 문제의 이러한 종류의 작업을 수행 할 때
감사합니다,
글래디스 헤르 초크 (Hertzog) 정권