【问题标题】:Errors in stat_smooth line fit for some groups cause no plot to be produced某些组的 stat_smooth 线拟合错误导致无法生成图
【发布时间】:2011-10-24 05:18:52
【问题描述】:

我正在尝试为具有大量不同组的数据集绘制曲线。我想在一个适合通用模型的图形上将曲线全部可视化(stat_smooth 带有带有准泊松误差的 glm),因此,我使用颜色对它们进行分组。但是,对于某些曲线,拟合函数失败了,我得到了

错误:没有找到有效的系数集:请提供起始值

然后就没有情节了。

有没有办法让情节在没有那些“坏”组的曲线的情况下出现?我问,因为有大量的组,虽然我可以编写一个错误检查脚本,然后将它们从数据中剔除,但如果除了有错误的那些之外的所有东西都可以绘制出来,那就更好了。

【问题讨论】:

  • 您是否尝试将绘图代码包装在 try 语句中?
  • 我同意@BenBolker;执行此操作的“正确”方法是使用tryggplot 之外进行模型拟合。

标签: r ggplot2


【解决方案1】:

我认为没有非常简单的方法可以做到这一点,但我会尝试以下方法:

编写一个循环或ldply 语句来运行您心目中的模型,包裹在try 中:例如

trymodelList <- ldply(mydata,.(grp1,grp2),glm,formula=y~x,family="quasipoisson")

(我认为当前数据块应该作为data 参数自动填充)。

找出哪些是坏的:像alply(trymodelList,inherits,what="try-error")

使用此逻辑向量将不需要的组子集化,然后将子集化数据传递给geom_smooth,而不是完整数据集。

我知道有些细节遗漏了...

编辑:我看到我基本上写下了您的“编写错误检查脚本......然后将它们从数据中踢出”策略。抱歉,我认为没有更简单的方法可以做到这一点。你可以试试 ggplot 用户列表...

【讨论】:

  • 是的,我试图避免这种情况,因为它不是一个通用的解决方案。人力资源管理系统。不过谢谢!
  • @Ben。两个建议。一,我认为您的意思是dlply,因为输入是data.frame,输出是模型的list。二,您可以将对glm的调用包装为failwith('error', glm),它会自动返回错误。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-24
  • 1970-01-01
  • 2010-10-14
  • 2017-10-12
  • 1970-01-01
  • 2016-10-05
相关资源
最近更新 更多