R Mclust(数据,G=1),如果一个变量为',则给出奇怪的西格玛输出;太恒定了;?
我试图使用MClust(,G=1)来估计Mu和假设为单一正态分布的值的协方差。我认为它大部分时间都很好用。但如果其中一个变量由一个重复常数组成(例如,所有0、所有5等),它会以我不理解的方式影响协方差 例如,在下面的代码中,引入D列,更改Sigma,以便出于某种原因它们都相等。如果我改变D中的一个值,事情会回到更多的期望值。根据行数的不同,有时需要更改多个样本 这有什么原因或解释吗?我正试图更好地理解它,以便在我的一个变量恰好“太恒定”的情况下预测如何避免它。如果它是可预测的,我可能会使用一些逻辑来手动删除变量,作为单变量进行分析,然后将其重新放入,等等 测试演示:R Mclust(数据,G=1),如果一个变量为',则给出奇怪的西格玛输出;太恒定了;?,r,gmm,mclust,R,Gmm,Mclust,我试图使用MClust(,G=1)来估计Mu和假设为单一正态分布的值的协方差。我认为它大部分时间都很好用。但如果其中一个变量由一个重复常数组成(例如,所有0、所有5等),它会以我不理解的方式影响协方差 例如,在下面的代码中,引入D列,更改Sigma,以便出于某种原因它们都相等。如果我改变D中的一个值,事情会回到更多的期望值。根据行数的不同,有时需要更改多个样本 这有什么原因或解释吗?我正试图更好地理解它,以便在我的一个变量恰好“太恒定”的情况下预测如何避免它。如果它是可预测的,我可能会使用一些逻
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
添加“太常量”变量:
testing_OP <- Mclust(testing, G = 1)
testing_OP$parameters$variance$Sigma
testing_OP$parameters$mean
稍微更改“太恒定”变量:
testing$D[100] = 1
testing_OP <- Mclust(testing, G = 1)
testing_OP$parameters$variance$Sigma
testing_OP$parameters$mean
包括常数“变量”意味着协方差矩阵对包括常数在内的任何一对变量都有0。实际上,在混合模型(例如,使用
Mclust
创建的模型)中包含常数是没有意义的。在拟合后应始终检查BIC选择的模型,因此如果我们在没有最后一个常数列的情况下运行该模型:
set.seed(111)
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
testing_OP <- Mclust(testing[,1:3], G = 1)
testing_OP$BIC
Bayesian Information Criterion (BIC):
EII VII EEI VEI EVI VVI EEE
1 -1895.339 -1895.339 -1883.817 -1883.817 -1883.817 -1883.817 -1655.214
VEE EVE VVE EEV VEV EVV VVV
1 -1655.214 -1655.214 -1655.214 -1655.214 -1655.214 -1655.214 -1655.214
Top 3 models based on the BIC criterion:
EEE,1 EEV,1 EVE,1
-1655.214 -1655.214 -1655.214
您只剩下EII和VII型号,来自:
“EII”球形,等体积
“VII”球形,不等体积
因此,您也可以在非常量列上运行EII或VII模型,得到相同的形状:
Mclust(testing[,1:3], G = 1,model="EII")$parameters$variance$Sigma
A B C
A 30.52413 0.00000 0.00000
B 0.00000 30.52413 0.00000
C 0.00000 0.00000 30.52413
如果你有一列是常数,那么用它来估计高斯分布是没有意义的,更不用说多元高斯分布了谢谢,我原以为它会给常数变量一个方差0,μ等于常数,然后在与其他变量交互作用时协方差为0。但我可以看出(感谢你的链接)事情并没有那么简单。
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
set.seed(111)
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
testing_OP <- Mclust(testing[,1:3], G = 1)
testing_OP$BIC
Bayesian Information Criterion (BIC):
EII VII EEI VEI EVI VVI EEE
1 -1895.339 -1895.339 -1883.817 -1883.817 -1883.817 -1883.817 -1655.214
VEE EVE VVE EEV VEV EVV VVV
1 -1655.214 -1655.214 -1655.214 -1655.214 -1655.214 -1655.214 -1655.214
Top 3 models based on the BIC criterion:
EEE,1 EEV,1 EVE,1
-1655.214 -1655.214 -1655.214
testing_OP$BIC
Bayesian Information Criterion (BIC):
EII VII EEI VEI EVI VVI EEE VEE EVE VVE EEV VEV EVV VVV
1 -2410.511 -2410.511 NA NA NA NA NA NA NA NA NA NA NA NA
Top 3 models based on the BIC criterion:
EII,1 VII,1
-2410.511 -2410.511 NA
Mclust(testing[,1:3], G = 1,model="EII")$parameters$variance$Sigma
A B C
A 30.52413 0.00000 0.00000
B 0.00000 30.52413 0.00000
C 0.00000 0.00000 30.52413