用 R 中的随机数据生成特定的异常值

问题描述

我正在尝试生成如下图所示的集群异常值,以更深入地调查这种情况。

我尝试过但一无所获,因为该数字有一个因变量和自变量。我想要同样的情况但是有多个自变量。 所以,它将是一个因变量和一个矩阵自变量。

enter image description here

我尝试的 R-Code 如下

n=50
p=2
x <- matrix(rnorm(n*p),ncol = p)
y <- rnorm(n)
b=quantile(x,probs = 0.95)
id=which(x>b)
no=length(id)
x[id]=rnorm(no,5,0.5)
y[id]=rnorm(1)+10

更新

我尝试了下面的代码,但还是和图中不一样

xa=rnorm(50)
xb=runif(50,min = 0,max=400)
x=rbind(xa,xb)
y=rnorm(100)
plot(x,y)

解决方法

你可以用

重现你的情节
set.seed(1)

xa = runif(20,20)
xb = runif(5,50,60)
x  = c(xa,xb)

y  = c(runif(20,25,120),runif(5,30,40))

plot(x,y,xlab="Independent variable",ylab="Response variable",xlim=c(0,60),ylim=c(25,pch=16)
,

多维数据的一个快速而肮脏的解决方法是创建一个循环,生成 rnorm 值并将它们保存为数据帧中的列向量。

另一种选择是使用 MASS package's rmvnorm function.

对于异常值,您可以使用 runif(n,min=a,max=b) 生成一堆随机数,并使用与我提到的数据帧过程相同的循环。