正規分布と対数正規分布が混在するモデルを作成する必要があります。これを作成するには、対数尤度関数を最大化して、2 つの共分散行列と混合パラメーター (合計 =7 パラメーター) を推定する必要があります。この最大化は nlm ルーチンで実行する必要があります。
相対データを使用しているため、平均は既知であり、1 に等しくなります。
私はすでに1次元(相対データの1セット)でそれをやろうとしましたが、うまくいきます。ただし、相対データの 2 番目のセットを導入すると、相関関係について非論理的な結果が得られ、多くの警告メッセージ (合計 25) が表示されます。
これらのパラメーターを推定するために、最初に 2 つのコマンド 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 次元で見つけるにはどうすればよいかを知っていますか?
私の質問に時間を割いていただき、誠にありがとうございます。
よろしく、
グラディス・ハーツォグ