R语言 使用Coefplot手动绘制多个模型的系数

dbf7pr2w  于 2023-02-26  发布在  其他
关注(0)|答案(1)|浏览(175)

我有一些模型对象的模型输出,R中的coefplot不支持。我试图在一个系数图中绘制多个模型的结果。如果我放入一个系数向量和一个标准误差向量,我可以在一个模型中完成这一操作。但是,如果我放入一个向量列表来绘制多个模型。
可重现示例:

coefs_1 <- c(1, 2, 3)
coefs_2 <- c(4, 5, 6)

ses_1 <- c(0.5, 0.3, 0.6)
ses_2 <- c(0.7, 0.4, 0.5)
coefplot(coefs_1, sd = ses_1)

有用,但是

coefplot(list(coefs_1, coefs_2), sd = list(ses_1, ses_2))

抛出错误。错误为:

Error in coefplot_prms(object = object, ..., sd = sd, ci_low = ci_low,  : 
  The first element of 'object' raises and error:
Error in nb * sd : non-numeric argument to binary operator

我尝试使用不同的方法将系数和ses输入到函数中,但也得到了相同误差的变化,我觉得我错过了这个函数如何工作和处理输入的一些关键部分。

dzhpxtsq

dzhpxtsq1#

澄清一下,您提到的函数coefplot来自库fixest
简短的回答是:

coefplot(list(
  matrix(c(coefs_1, ses_1, rep(NA, 6)), ncol = 4),
  matrix(c(coefs_2, ses_2, rep(NA, 6)), ncol = 4))
))

长长的回答:
看起来这个函数除了拟合模型对象之外,还可以将矩阵作为其输入,这看起来像coeftable(object)的输出。这里的对象将是拟合模型(您可以尝试使用lm())。
该输出是一个矩阵,其中前两行是估计值和标准误差,后两行是此处未使用的任何其他内容(对于lm(),是t值和p值)。
现在,与对象列表类似,函数也可以获取这些矩阵的列表,因此可以使用上面所示的代码。

相关问题