数据点的随机、曲线分布

3

背景

提供一个R编程的例子。

问题

创建一个数值分布,当建模后产生类似以下曲线的形状:

基本上,我想做如下操作:

x <- seq( 0, 2, by=0.01 )
y <- sin( 2 * pi * cos( x - 1/2 ) )
plot( x, y * runif( x ) )

但是如果没有围绕在0.5周围的数据点:

问题

你会如何创建这样的分布?

谢谢!

3个回答

3
slo<-0.5 #slope of underlying trend
sta<--0.5 #starting y value
amp<-0.2 #amplitude of sine wave
fre<-3 #frequency of sine wave
noi<-0.8 #amplitude of noise term
x<-seq(0,2,0.01)
y<-sta+(slo*x)+(amp*sin(fre*x)) #y no noise
ywnoise<-y+(noi*(runif(length(x))-0.5)) #y with noise

plot(x,ywnoise)
lines(x,y, col="orange")
grid()

那正是我所想的。太棒了,谢谢。(网格部分处理得很好。) - Dave Jarvis

1

嗯...我不确定你是否需要分布的特定统计属性,但是像这样做可以消除聚集

plot(x,y+rnorm(length(x), 0, 0.2))

这非常接近我想使用的内容。谢谢! - Dave Jarvis

1

由于 sin(2*pi*cos(x-0.5)) 在 0.5 处趋近于零,您可以尝试添加 runif()


x <- seq( 0, 2, by=0.01 )
y <- sin( 2 * pi * cos( x - 1/2 ) ) +runif(201)
plot( x,y  )
lines(loess(y~x)$x, lowess(y~x)$y)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接