【问题标题】:Generate specific outliers with random data in R在 R 中使用随机数据生成特定的异常值
【发布时间】:2021-02-09 13:07:05
【问题描述】:

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

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

我的 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)

【问题讨论】:

  • 我有点不明白你的问题。一方面,您在谈论“自变量矩阵”。所以,不止一个。另一边,你坚持“与图中相同的情节”。然而,该图仅显示了一个自变量。那么,你到底想要什么? 除非您明确自己想要什么,否则无法回答这个问题。当问题不清楚时,赏金不会帮助您。
  • @TMS,简单地说,我需要的是 y vs x[,1], y vs x[,2], ...., y vs x[,10]。如果您将所有这些一一绘制,它将如上图所示。所以,我们有一个向量 y 和矩阵 x_i,i=1:10。

标签: r regression


【解决方案1】:

你可以重现你的情节

set.seed(1)

xa = runif(20,0,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,120),pch=16)

【讨论】:

  • 太好了,剧情制作准确!第二部分呢,我的意思是如何使多个自变量类似于在矩阵中创建和存储的自变量。假设是 10。
【解决方案2】:

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

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

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

【讨论】:

  • 谢谢,但这与问题的主要思想无关。
  • 那我错过了什么?您想生成带有异常值的多元数据...好吧,我提到的函数可以让您做到这一点。
  • 谢谢,我需要的是生成如上图所示的数据(特定的异常值簇),每次绘制y和x矩阵的任何列(x1,x2,x3,x4, x5),相同的数字将被表示。
  • 这仍然可以通过我列出的功能来完成。您需要将生成的多元数据观察值与生成的异常值相加,这可以通过rbind 完成。我不确定您是否可以生成包含异常值的多元数据。即便如此,组合观察的两步过程应该会创建您想要的数据集。
  • 我更新了代码还是和图中不一样
猜你喜欢
  • 1970-01-01
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
  • 2013-10-03
  • 2013-06-01
  • 1970-01-01
  • 2018-12-11
  • 1970-01-01
相关资源
最近更新 更多