[英]R multinomial distribution variance
在下面的代码中, p_hat
包含给定数据样本中X1,X2和X3的概率的MLE。 根据Wikipedia上的多项式分布页面,估算概率的协方差矩阵计算如下:
set.seed(102)
X <- rmultinom(n=1, size=100, prob =c(0.1,0.3,0.6))
p_hat <- X/sum(X)
# print covariance matrix
cov_matrix <- matrix(0, nrow=length(p_hat), ncol=length(p_hat))
rownames(cov_matrix) <- c("X1","X2","X3"); colnames(cov_matrix) <- c("X1","X2","X3");
for (r in 1: length(p_hat)){
for (c in 1: length(p_hat)){
if(r==c){cov_matrix[r,c] <- p_hat[r] * (1-p_hat[r])}
else{cov_matrix[r,c] <- -p_hat[r] *p_hat[c]}
}
}
这个实施正确吗?
给定prob =c(0.1,0.3,0.6)
的多项式分布,是否存在可以产生此协方差矩阵的R函数?
您甚至可以使用outer
和diag
获得相同的结果
> p <- drop(p_hat)
> variance <- p*(1-p)
> covariance <- -outer(p, p)
> diag(covariance) <- variance
> covariance
[,1] [,2] [,3]
[1,] 0.090 -0.0290 -0.0610
[2,] -0.029 0.2059 -0.1769
[3,] -0.061 -0.1769 0.2379
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.