问题描述
我正在使用以下R代码进行PCA分析:
sigma1 <- as.matrix((data[,3:22]))
sigma2 <- as.matrix((data[,23:42]))
sample1 <- mvrnorm(n = 250,mu = as_vector(data[,1]),Sigma = sigma1)
sample2 <- mvrnorm(n = 250,2]),Sigma = sigma2)
sampCombined <- rbind(sample1,sample2);
covCombined <- cov(sampCombined);
covCombinedPCA <- prcomp(sampCombined);
eigenvalues <- covCombinedPCA$sdev^2;
我想重复/循环这个,所以我有50个特征值向量。然后,我想找到50个重复的特征值的均值向量。我该怎么做?
解决方法
您可以将整个代码放入一个函数中。假设该函数称为eigen_fun
。
eigen_fun <- function(data) {
sigma1 <- as.matrix((data[,3:22]))
sigma2 <- as.matrix((data[,23:42]))
sample1 <- mvrnorm(n = 250,mu = as_vector(data[,1]),Sigma = sigma1)
sample2 <- mvrnorm(n = 250,2]),Sigma = sigma2)
sampCombined <- rbind(sample1,sample2);
covCombined <- cov(sampCombined);
covCombinedPCA <- prcomp(sampCombined);
eigenvalues <- covCombinedPCA$sdev^2;
return(eigenvalues)
}
运行eigen_fun(data)
一次会给您一组值。要重复50次,可以使用replicate
。
mat <- replicate(50,eigen_fun(data))
mat
中的每一列都是一组值,可以使用mean
来获得每次迭代的colMeans
:
colMeans(mat)