背景
提供一个 R 编程示例。
问题
创建一个值分布,该分布在建模时会产生类似于以下内容的曲线:
本质上,我想做类似的事情:
x <- seq( 0, 2, by=0.01 )
y <- sin( 2 * pi * cos( x - 1/2 ) )
plot( x, y * runif( x ) )
但如果没有 0.5 左右的数据点簇:
问题
您将如何创建这样的分布?
谢谢!
提供一个 R 编程示例。
创建一个值分布,该分布在建模时会产生类似于以下内容的曲线:
本质上,我想做类似的事情:
x <- seq( 0, 2, by=0.01 )
y <- sin( 2 * pi * cos( x - 1/2 ) )
plot( x, y * runif( x ) )
但如果没有 0.5 左右的数据点簇:
您将如何创建这样的分布?
谢谢!
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()
嗯...我不确定您的分布是否需要任何特定的统计属性,但是像这样的东西摆脱了团块
plot(x,y+rnorm(length(x), 0, 0.2))
由于 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)