MClust(, G = 1) を使用して、単一の正規分布を仮定して、値の Mu と Covariance を推定しようとしています。ほとんどの場合、問題なく動作すると思います。しかし、変数の 1 つが繰り返される定数 (たとえば、すべて 0、すべて 5 など) で構成されている場合、それは私には理解できない方法で共分散に影響を与えます。
たとえば、次のコードでは、列 D を導入すると、何らかの理由ですべてが等しくなるように Sigma が変更されます。D の 1 つの値を変更すると、より多くの期待値に戻ります。行数によっては、複数のサンプルを変更する必要がある場合があります。
これには理由や説明がありますか?私はそれをよりよく理解しようとしているので、変数の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