我正在尝试使用 MClust(, G = 1) 假设单一正态分布的值的 Mu 和协方差。我认为它大部分时间都可以正常工作。但是,如果其中一个变量由重复的常数组成(例如全 0、全 5 等),它会以我不理解的方式影响协方差。
例如,在下面的代码中,引入 D 列会更改 Sigma,以便它们出于某种原因都相等。如果我改变 D 中的一个值,事情就会回到更多的预期值。根据行数,有时需要更改 1 个以上的样本。
这有什么原因或解释吗?我试图更好地理解它,以便在我的变量之一恰好“太恒定”的情况下预测如何避免它。如果它是可预测的,我可能会使用一些逻辑来手动删除变量,分析为单变量并将其放回,等等
测试演示:
library(mclust)
testing <- data.frame(A = runif(100, -5.0, 10.0),
B = runif(100, -7.5, 5.0),
C = runif(100, -5.0, 5.0),
D = rep(0,100))
testing$B <- testing$B + testing$A
testing$C <- testing$C - testing$B
使用 3 个典型变量:
testing_OP <- Mclust(testing[,1:3], G = 1)
testing_OP$parameters$variance$Sigma
testing_OP$parameters$mean
输出:
A B C
A 19.73553 19.58861 -19.75416
B 19.58861 31.11929 -31.57945
C -19.75416 -31.57945 39.59255
[,1]
A 3.086933
B 2.133667
C -1.980933
添加“太恒定”变量:
testing_OP <- Mclust(testing, G = 1)
testing_OP$parameters$variance$Sigma
testing_OP$parameters$mean
输出:
A B C D
A 22.61184 0.00000 0.00000 0.00000
B 0.00000 22.61184 0.00000 0.00000
C 0.00000 0.00000 22.61184 0.00000
D 0.00000 0.00000 0.00000 22.61184
[,1]
A 3.086933
B 2.133667
C -1.980933
D 0.000000
稍微改变“太恒定”的变量:
testing$D[100] = 1
testing_OP <- Mclust(testing, G = 1)
testing_OP$parameters$variance$Sigma
testing_OP$parameters$mean
输出:
A B C D
A 19.73552599 19.58861034 -19.75416206 0.04663097
B 19.58861034 31.11928871 -31.57945373 0.03878541
C -19.75416206 -31.57945373 39.59255338 -0.06956324
D 0.04663097 0.03878541 -0.06956324 0.00990000
[,1]
A 3.086933
B 2.133667
C -1.980933
D 0.010000