আমি @ ম্যাক্রোর উত্তরটি কম্পিউটেশনালি যাচাই করার চেষ্টা করেছি কিন্তু খুঁজে পেয়েছি যেটি সমবায় সমাধানে একটি ছোটখাটো ত্রুটি বলে মনে হচ্ছে। তিনি
তবে দেখা যাচ্ছে যে সঠিক সমাধানটি আসলে
নিম্নলিখিত আর স্ক্রিপ্ট একটি সহজ উদাহরণ যা সসীম পার্থক্য প্রতিটি উপাদানের জন্য গণনা করা হয় উপলব্ধ । এটি দেখায় যে
∂এল∂Σ= - 12( Σ- 1- Σ- 1( y - μ ) ( y - μ )'Σ- 1) = ক
বি =2 এ -ডায়াগ( এ )
Σএকজনকেবল তির্যক উপাদানগুলির জন্য সঠিক উত্তর সরবরাহ করে যখন entry every প্রতিটি প্রবেশের জন্য সঠিক।
বি
library(mvtnorm)
set.seed(1)
# Generate some parameters
p <- 4
mu <- rnorm(p)
Sigma <- rWishart(1, p, diag(p))[, , 1]
# Generate an observation from the distribution as a reference point
x <- rmvnorm(1, mu, Sigma)[1, ]
# Calculate the density at x
f <- dmvnorm(x, mu, Sigma)
# Choose a sufficiently small step-size
h <- .00001
# Calculate the density at x at each shifted Sigma_ij
f.shift <- matrix(NA, p, p)
for(i in 1:p) {
for(j in 1:p) {
zero.one.mat <- matrix(0, p, p)
zero.one.mat[i, j] <- 1
zero.one.mat[j, i] <- 1
Sigma.shift <- Sigma + h * zero.one.mat
f.shift[i, j] <- dmvnorm(x, mu, Sigma.shift)
}
}
# Caluclate the finite difference at each shifted Sigma_ij
fin.diff <- (f.shift - f) / h
# Calculate the solution proposed by @Macro and the true solution
A <- -1/2 * (solve(Sigma) - solve(Sigma) %*% (x - mu) %*% t(x - mu) %*% solve(Sigma))
B <- 2 * A - diag(diag(A))
# Verify that the true solution is approximately equal to the finite difference
fin.diff
A * f
B * f