Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
pool.compare生成不可编译的参数错误_R_R Mice - Fatal编程技术网

pool.compare生成不可编译的参数错误

pool.compare生成不可编译的参数错误,r,r-mice,R,R Mice,备选标题:模型矩阵和系数集显示不同数量的变量 我正在使用R的mice包进行一些分析。我想使用pool.compare()比较两个模型(保存在mira对象中),但我一直得到以下错误: 模型中存在错误。矩阵(公式、数据)%*%coefs:不一致参数 二进制运算符%*%表示R中的矩阵乘法 表达式model.matrix(公式,数据)生成“具有指定公式和数据的类回归模型的设计矩阵”(来自R文档中的model.matrix{stats}) 在错误消息中,coefs来自est1$qbar,其中est1是mi

备选标题:模型矩阵和系数集显示不同数量的变量

我正在使用Rmice包进行一些分析。我想使用
pool.compare()
比较两个模型(保存在mira对象中),但我一直得到以下错误:

模型中存在错误。矩阵(公式、数据)%*%coefs:不一致参数

二进制运算符
%*%
表示R中的矩阵乘法

表达式
model.matrix(公式,数据)
生成“具有指定公式和数据的类回归模型的设计矩阵”(来自R文档中的model.matrix{stats}

在错误消息中,
coefs
来自
est1$qbar
,其中
est1
是mipo对象,
qbar
元素是“完整数据估计的平均值。多重插补估计值”。(来自mipo类{mice}的文档)

就我而言

  • est1$qbar
    是长度为36的数字向量
  • data
    是一个包含82个变量的918个观测值的data.frame
  • formula
    是包含我的模型公式的类“formula”
  • 模型。矩阵(公式、数据)
    是一个维度为918 x 48的矩阵

如何解决/防止此错误?

正如偶尔发生的那样,我在写问题时找到了自己问题的答案

线索一是,只有当数据中存在分类变量的水平时,
est1.qbar
中分类变量的估计才存在。我的一些变量是因子变量,并不是每个级别都有表示。这导致了警告“由于缺少级别,因子变量名中的对比度下降”,我愚蠢地忽略了这一警告

另一方面,查看
dimnames(model.matrix.temp)[[2]]
显示,模型矩阵中每个因子变量的每个级别都有一列,而不管该变量的级别是否存在于数据中。因此,尽管缺失因子水平的对比度在估计系数方面有所下降,但这些因子水平仍然出现在模型矩阵中。这意味着模型矩阵的列数大于
est1.qbar
(估计系数的向量)的长度,因此矩阵乘法不起作用


这里的答案是修正因子变量,这样就没有未使用的级别。这可以通过
factor()
函数来完成(如上所述)。不幸的是,在插补之前,这需要在原始数据集上完成。

这更多的是关于R的工作原理,而不是统计本身。它可能是在上而不是在这里。我们可以把它移植到那里。你认为我应该把问题的标题改成更面向代码吗?很难说;这取决于你。