使用lines()命令绘制出异常连线图的问题排查求助
GAM绘图线条异常连线的问题排查
问题根源:x变量未按顺序排列
lines()函数会严格按照输入的x和预测值的原始顺序依次连接点。如果当前的x向量是乱序的,就会出现线条在高低值之间来回跳转的异常连线(对应你提供的异常图)。之前绘图正常,是因为当时的x是按升序/降序排列的。
解决方法
1. 对x和预测值按x排序后绘图
先生成排序索引,再重新提取有序的x和预测值:
# 生成x的排序索引 ord <- order(x) # 用有序的x和预测值绘制线条 lines(x[ord], predict(gam.ns)[ord], col=1, lwd=2)
2. 验证x的顺序是否混乱
可以快速检查当前x的状态:
# 查看x的前若干值,判断是否乱序 head(x, 20) # 直接检查是否无序,返回TRUE则说明x是乱序的 is.unsorted(x)
额外说明
之前绘图时包含额外数据(如原始散点),可能当时的plot()函数自动对x做了排序,或者当时使用的x本身就是有序状态;而现在单独调用lines()时,x是原始乱序的,因此出现异常连线。
内容的提问来源于stack exchange,提问作者EmilyLars
相关产品推荐
相关产品推荐

