r - 在 R lavaan 中使用 getCov 和一个实际的大相关矩阵
问题描述
我希望使用具有 120 个指标(变量)和大约 40 万受访者的 lavaan 验证性因子分析 (CFA) 功能。如此大的样本量会导致 R 中的内存问题。通常我可能只使用一小部分人,但我正在尝试复制现有的工作。我尝试简单地将相关/协方差矩阵读入 R,然后进行 CFA,但我在使用 getCov 函数时遇到了问题。我看到的每个示例都涉及手动编写一个表示相关集的对象。但是,这对于 120×120 矩阵是不可能的。我尝试在 R 中生成一个相关矩阵,然后将该矩阵读入 getCov,但仍然出现很多错误。我想有一些方法可以格式化它,我尝试了几种方法(下面两种),但无济于事。
这是一个示例,我创建了一个包含 120 个变量的数据集。为方便起见,我将样本大小设置为 1000。当我尝试生成相关矩阵然后使用 getCov 命令时,出现以下错误:
“ lav_matrix_lower2full(x, 对角线 = 对角线) 中的错误:p == round(p, 0) 不正确”</p>
set.seed(371)
df <- data.frame(matrix(NA, nrow = 1000, ncol = 120))
for (i in 1:120) {
x <- runif(1000, min=1, max=7)
df [, i] <- x
}
dim (df)
#getting correlations... I think getCov needs only one diagonal side#
cor.matrix <- round(cor(df),4)
upper<-cor.matrix
upper[upper.tri(cor.matrix)]<-NA
lower<-as.matrix (upper)
#try 1#
matrix <- getCov (x=lower, names = c('X1', 'X2', 'X3', 'X4', 'X5', 'X6', 'X7', 'X8', 'X9', 'X10', 'X11', 'X12', 'X13', 'X14', 'X15',
'X16', 'X17', 'X18', 'X19', 'X20', 'X21', 'X22', 'X23', 'X24', 'X25', 'X26', 'X27', 'X28',
'X29', 'X30', 'X31', 'X32', 'X33', 'X34', 'X35', 'X36', 'X37', 'X38', 'X39', 'X40', 'X41', 'X42', 'X43', 'X44', 'X45', 'X46',
'X47', 'X48', 'X49', 'X50', 'X51', 'X52', 'X53', 'X54', 'X55', 'X56', 'X57', 'X58', 'X59', 'X60', 'X61', 'X62', 'X63', 'X64',
'X65', 'X66', 'X67', 'X68', 'X69', 'X70', 'X71', 'X72', 'X73', 'X74', 'X75', 'X76', 'X77', 'X78', 'X79', 'X80', 'X81', 'X82',
'X83', 'X84', 'X85', 'X86', 'X87', 'X88', 'X89', 'X90', 'X91', 'X92', 'X93', 'X94', 'X95', 'X96', 'X97', 'X98', 'X99', 'X100',
'X101', 'X102', 'X103', 'X104', 'X105', 'X106', 'X107', 'X108', 'X109', 'X110', 'X111', 'X112', 'X113', 'X114', 'X115', 'X116', 'X117', 'X118',
'X119', 'X120'))
#try 2#
lower <- format_csv (as.data.frame(lower), col_names=FALSE)
matrix <- getCov (x=lower, names = c('X1', 'X2', 'X3', 'X4', 'X5', 'X6', 'X7', 'X8', 'X9', 'X10', 'X11', 'X12', 'X13', 'X14', 'X15',
'X16', 'X17', 'X18', 'X19', 'X20', 'X21', 'X22', 'X23', 'X24', 'X25', 'X26', 'X27', 'X28',
'X29', 'X30', 'X31', 'X32', 'X33', 'X34', 'X35', 'X36', 'X37', 'X38', 'X39', 'X40', 'X41', 'X42', 'X43', 'X44', 'X45', 'X46',
'X47', 'X48', 'X49', 'X50', 'X51', 'X52', 'X53', 'X54', 'X55', 'X56', 'X57', 'X58', 'X59', 'X60', 'X61', 'X62', 'X63', 'X64',
'X65', 'X66', 'X67', 'X68', 'X69', 'X70', 'X71', 'X72', 'X73', 'X74', 'X75', 'X76', 'X77', 'X78', 'X79', 'X80', 'X81', 'X82',
'X83', 'X84', 'X85', 'X86', 'X87', 'X88', 'X89', 'X90', 'X91', 'X92', 'X93', 'X94', 'X95', 'X96', 'X97', 'X98', 'X99', 'X100',
'X101', 'X102', 'X103', 'X104', 'X105', 'X106', 'X107', 'X108', 'X109', 'X110', 'X111', 'X112', 'X113', 'X114', 'X115', 'X116', 'X117', 'X118',
'X119', 'X120'))
解决方案
推荐阅读
- c++ - 带有函数指针的 C++ 运算符优先级
- php - 如何传递资源查看?
- javascript - 如何理解这个 Node.js 代码片段?
- python - 使用 Python 在不同模块中导入函数的返回值时出错
- swift - Swift - 如何在加载 ViewController 之前正确实现 CoreData 的更新/设置以供使用
- powershell - Move-Item 的通配符问题
- jquery - 如何使用 div 标签和 jquery 从侧边菜单加载 html 页面
- javascript - (JavaScript) 将数组中的每个数字相加以使其永远不会低于 1 所需的最小数字
- protractor - Protractor console.log 中的空响应
- python - 在python中删除()和[]之间的文本,但有一些例外