我正在尝试用R编写代码,在一个包含11750个点和三列的巨大数据集中,我将一次考虑500个点,计算分布的均值和协方差矩阵,并使用它绘制图椭圆形。为此,我编写了一个for循环,其中以500的步长考虑了所有点。在循环内,我尝试使用Mclust函数获取数据摘要。但是,执行数据之后且执行Mclust之前,会发生以下错误:
mvnX中的错误(数据=数据,优先级=优先级):数据必须是一维的
最初,我打算使用以下代码删除异常值:
Data <- read.csv("CombinedDataset.csv", header = TRUE, sep = ",")
dat = Data[2:5000,3:5]
library(MVN)
M = mvn(dat, mvnTest="hz", multivariateOutlierMethod = "quan", showNewData = TRUE)
Comb_Data = M$newData
Comb_Data$D <- (max(Comb_Data$D) - Comb_Data$D)/(max(Comb_Data$D) - min(Comb_Data$D))
Comb_Data$R <- (max(Comb_Data$R) - Comb_Data$R)/(max(Comb_Data$R) - min(Comb_Data$CCR))
Comb_Data$A <- (max(Comb_Data$A) - Comb_Data$A)/(max(Comb_Data$A) - min(Comb_Data$A))
由于它消除了某些异常点,因此我认为数据的不规则性阻碍了for循环。因此,我尝试不移除异常值,但是并没有消除错误
这是不删除异常的for循环的代码:
Data2 <- read.csv("CombinedDataset.csv", header = TRUE, sep = ",")
dat2 = Data[2:11750,3:5]
Comb_Data2 = dat2
Comb_Data2$D <- (max(Comb_Data2$D) - Comb_Data2$D)/(max(Comb_Data2$D) - min(Comb_Data2$D))
Comb_Data2$R <- (max(Comb_Data2$R) - Comb_Data2$R)/(max(Comb_Data2$R) - min(Comb_Data2$R))
Comb_Data2$A <- (max(Comb_Data2$A) - Comb_Data2$A)/(max(Comb_Data2$A) - min(Comb_Data2$A))
library(mclust)
for (Comb_Data2 in seq(2,11750,500)) {
Data1_2 <- Mclust(Comb_Data2)
summary(Data1_2)
}
在此问题上的任何帮助将不胜感激。