補間

  • ここで平滑化をしている
  • 間を埋めたい
  • 補間という方法がある(Rでこんな)

  • 多次元でドロネー三角形分割をして多次元空間の離散点に滑らかな値をあたえたときに、そこにスプライン曲面を引きたい
  • スプライン曲線は、局所(補間局所)ごとに異なる多項式を作りつつ、局所接続部分で滑らかにつながるようにしたもの
  • 2次元スプライン補間(http://www.math.utah.edu/~pa/MDS/triangulation.html:titel=こちら)
  • 多次元一般化(こちら)
  • これも?
# 1次元の分布
# 母分布を決めよう
means <- c(0,50)
sds <- c(1,5)
ratio <- c(0.2,0.8)
N.pt <- 100
X <- c(rnorm(N.pt*ratio[1],means[1],sds[1]),rnorm(N.pt*ratio[2],means[2],sds[2]))
true.Dens <- ratio[1] * dnorm(X,means[1],sds[1])+ratio[2]*dnorm(X,means[2],sds[2])
# 行列型にする
X <- matrix(X,ncol=1)
# 各点に1観測ずつ
Y <- rep(1,length(X[,1]))# 酔歩による平滑化をこの「ドロネー的体積補正」する前とした後の観測状態に実施するn <- 1000
r <- 0.1
RW.Mx <- my.rw.density.mx(X,Y,n,r)
# 平滑化後の各点の重み
Z <- RW.Mx %*% Y

# ドロネー的体積補正法
D.out <- my.delaunay.rw.density(X,n,r)
Z.d <- D.out$Y.post

dens.X <- density(X,bw = "SJ-ste")
#dens.X <- density(X)

xx <- seq(from=min(X),to=max(X),length=500)
Y.xx <- rep(0,length(xx))
for(i in 1:length(xx)){
	Y.xx[i] <- my.linear.delaunay(xx[i],X,D.out$delaunay.X,D.out$Y.post)
}

plot(dens.X,lwd=3)
ord <- order(X)
points(X[ord],Z[ord]/max(Z)*max(dens.X[[2]]),pch=20,col=2,type="p")
points(X[ord],Z.d[ord]/max(Z.d)*max(dens.X[[2]]),pch=20,col=3,type="p")
points(X[ord],true.Dens[ord]/max(true.Dens)*max(dens.X[[2]]),pch=20,col=4,type="l",lwd=3)
library(pracma)
yc<-interp1(c(X[ord]),c(Z.d[ord]),xx,method="spline")
yc[which(yc<0)] <- 0
points(xx,yc/max(yc)*max(dens.X[[2]]),pch=20,col=5)