【发布时间】:2016-09-29 02:24:08
【问题描述】:
我想知道如何调节高斯过程(例如,通过调整协方差函数?)以仅生成满足某些预设约束的轨迹。例如,以下用 R 编写的代码会生成平滑曲线(图 1),我想让曲线从原点开始,即 f(0)=0。此外,是否可以强制附加特征,例如,使所有曲线下凹并且只有一个拐点等。
require(MASS) ## mvrnorm function is needed
## to generate covariance matrix using a squared exponential function
calc.sigma <- function( X1, X2, sigma_sq, phi_sq, tau_sq ) {
Sigma <- matrix( rep( 0, length(X1)*length(X2) ), nrow=length(X1) )
for( i in 1:nrow(Sigma) ) {
for( j in 1:ncol(Sigma) ) {
Sigma[i,j] <- sigma_sq*exp(-phi_sq*(X1[i] - X2[j])^2) + ifelse(i==j, tau_sq, 0.0);
}
}
return(Sigma)
}
x <- seq(0,1,len=100) # input value
## parameters for covariance function
sigma_sq <- 1
phi_sq <- 10
tau_sq <- 1e-6
## parameters for mean function
a <- 1
b <- 5
mu <- a*( 1-exp(-b*x) ) # mean
# plot(mu)
sigma <- calc.sigma( x, x , sigma_sq, phi_sq, tau_sq )
N <- 10 # number of samples
samples <- matrix( rep( 0, length(x)*N ), ncol=N )
for ( i in 1:N ) {
samples[,i] <- mvrnorm( 1, mu, sigma )
}
plot( x, samples[,1], type="l", xlim=c(0,1), ylim=c(-5,5) )
for( i in 2:ncol(samples) ){
lines( x, samples[,i] )
}
【问题讨论】:
标签: gaussian normal-distribution