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

R语言线性回归剔除指定行后异常值仍存在问题求助

问题根本原因

  1. R语言不支持直接对字符型行名使用负号索引,负索引仅适用于数字下标,你原代码中的NoNACountry[-c("Spain", "Luxembourg"),]无法正确删除对应国家的行,因此异常值仍然存在。
  2. 若索引后数据框自动降级为向量,会丢失行名、结构信息,也会导致后续拟合逻辑异常。

解决方法

按行名筛选数据时使用逻辑判断,同时加上drop = FALSE参数强制保留数据框结构:

# 筛选排除目标国家,drop=FALSE保证返回数据框、不丢失行名
clean_data <- NoNACountry[!rownames(NoNACountry) %in% c("Spain", "Luxembourg"), , drop = FALSE]

# 用清洗后的数据拟合线性回归
fit <- lm(Robbery ~ Unlawful.acts.involving.controlled.drugs.or.precursors, 
          data = clean_data)

# 绘制诊断图
par(mfrow=c(2,2))
plot(fit)

参数说明

drop = FALSE放在方括号索引的第三个参数位置(行筛选、列筛选之后),作用是即使筛选后数据只剩单列/单行,也强制返回数据框格式,不会自动转换为向量,避免丢失行名和表结构。

你可以先运行rownames(clean_data)验证Spain、Luxembourg是否已被成功删除,确认筛选正确后再拟合模型即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:15:02