You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R中残差vs拟合值图标记极端点遇identify函数警告问题排查

解决残差vs拟合值图的极端点标记问题

方法一:直接定位并标记x轴极端点

不用手动点击,直接通过拟合值排序精准找到目标点,代码如下:

mod1 <- lm(y.variable ~ x.variable, data = dataframe)
summary(mod1)

# 整合拟合值、残差和标签到数据框
fit_resid_df <- data.frame(
  fitted_val = fitted(mod1),
  resid_val = residuals(mod1),
  obs_label = dataframe$name  # 替换成你实际的标签列,用行名的话改成rownames(dataframe)
)

# 筛选拟合值最小和最大的两个点
extreme_rows <- order(fit_resid_df$fitted_val)
target_points <- fit_resid_df[c(extreme_rows[1], extreme_rows[length(extreme_rows)]), ]

# 绘图并标记
plot(fitted(mod1), residuals(mod1))
abline(h = 0)
# 用红色实心点突出极端点
points(target_points$fitted_val, target_points$resid_val, col = "red", pch = 19)
# 在点上方添加标签
text(target_points$fitted_val, target_points$resid_val, 
     labels = target_points$obs_label, pos = 3, col = "red")

这个方法直接锁定x轴最左(拟合值最小)和最右(拟合值最大)的点,完全不需要手动操作,避免识别误差。

方法二:修复identify()函数的识别问题

你遇到的'warning: no point within 0.25 inches'是因为默认的识别范围(tol=0.25英寸)太严格,调整参数并确保标签正确即可:

# 扩大识别范围,同时确保标签是长度匹配的向量
identify(fitted(mod1), residuals(mod1), 
         labels = dataframe$name,  # 必须和数据点数量一致,比如数据框的标签列
         tol = 0.5)  # 把识别范围调整为0.5英寸,可根据点的密集程度微调

如果还是无法识别,检查dataframe$name是否存在,或者改用行名作为标签:labels = rownames(dataframe)。

内容的提问来源于stack exchange,提问作者burphound

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 12:21:08