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

如何在R语言线性回归数据集中注入10%Y方向相同异常值?

解决线性回归数据集添加Y方向固定异常值的问题

没问题,我来帮你搞定这个需求!首先先修正你初始代码里的一个小bug,再一步步教你添加Y方向的固定异常值。

你的原代码里有个逻辑错误:e11是在计算y之后才生成的,这会导致R报错找不到e11变量——得先生成误差项,再用它计算y值。

接下来咱们实现添加10%的Y方向相同异常值,步骤很清晰:

  • 先算需要修改的样本量:n=20的10%是2个样本
  • 随机从20个样本里挑选2个不重复的索引
  • 给选中样本的y值加上一个固定的异常偏移量(数值可以按需调整,只要和正常数据差异明显就行)

下面是完整的修正后代码,我加了详细注释:

# 设置基础参数
n11 <- 20          # 总样本量
m1 <- 0            # 正态分布均值
sd1 <- 1           # 正态分布标准差
b0 <- 0            # 回归截距
b1 <- 1            # 回归斜率
outlier_shift <- 5 # Y方向异常值的固定偏移量(可自行调整正负/大小)

# 生成自变量x
x <- rnorm(n11, m1, sd1)

# 先生成误差项e11(修正原代码的顺序问题)
e11 <- rnorm(n11, m1, sd1)

# 生成无异常值的初始y值
y <- b0 + b1*x + e11

# 计算需要添加异常值的样本数量
outlier_num <- round(n11 * 0.1)

# 随机挑选要修改的样本索引(保证不重复)
outlier_pos <- sample(1:n11, outlier_num)

# 给选中样本添加固定异常值
y[outlier_pos] <- y[outlier_pos] + outlier_shift

# 整理成数据框
data11 <- data.frame(y, x, e11, b0, b1)

# 拟合线性模型
model1 <- lm(y ~ x, data=data11)

关键细节说明:

  • 用sample(1:n11, outlier_num)随机选索引,每次运行都会随机挑不同的样本加异常值,避免固定位置的异常值
  • 如果想要异常值是完全固定的数值(比如直接设为10,而非在原y基础上偏移),可以把最后一步改成y[outlier_pos] <- 10
  • 你可以用plot(y ~ x, data=data11)可视化数据集,能直观看到那2个明显的异常点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:37:08