在 R 中循环采样以创建许多向量
Looping over sampling in R to create many vectors
我正在使用以下 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, mu = as_vector(data[,2]), Sigma = sigma2)
sampCombined <- rbind(sample1, sample2);
covCombined <- cov(sampCombined);
covCombinedPCA <- prcomp(sampCombined);
eigenvalues <- covCombinedPCA$sdev^2;
我想 repeat/loop 这个,这样我就有 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, mu = as_vector(data[,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)
我正在使用以下 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, mu = as_vector(data[,2]), Sigma = sigma2)
sampCombined <- rbind(sample1, sample2);
covCombined <- cov(sampCombined);
covCombinedPCA <- prcomp(sampCombined);
eigenvalues <- covCombinedPCA$sdev^2;
我想 repeat/loop 这个,这样我就有 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, mu = as_vector(data[,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)