- 下限のある分布の推定で、正規分布を折り返し(非心カイ分布)にするか、非心カイ分布にしたうえでここの構成小分布の期待値を気にするかについて、いろいろやったが、そもそも、非心カイ分布では期待値を十分に小さくできないこともあることがわかり、推定結果はそんなに変わらなそうなことも分かった(だったら、ただの折り返しの方が計算不可が小さくてよさそうだ)
DF <- 1
MM <- 4
x <- c(runif(60),runif(20)+1,runif(40)+2,rexp(100))
x<-c(rexp(5),rnorm(3,7),rchisq(5,2,3),runif(10)*0.1)
x <- rchisq(10,1)
d <- density(x)
bw <- bw.nrd0(x)
s <- seq(from=0,to=max(d$x),length=100)
y <- rep(0,length(s))
ys <- ys.2 <- ys.3 <- ys.norm <- matrix(0,length(x),length(s))
yy <- rep(0,length(s))
for(i in 1:length(x)){
M <- x[i]
if(M/bw<0.8){
print("less")
ys[i,] <- dchi(s/bw,df=1,M/bw)/length(x)/bw
ys.2[i,] <- dchi(s/bw,df=1,M/bw)/length(x)/bw
}else if(dnorm(0,M,bw)<0.0001){
print("no")
ys[i,] <- dnorm(s,M,bw)/length(x)
ys.2[i,] <- dnorm(s,M,bw)/length(x)
}else{
print("optim")
optim.out <- optim_nc_m(df=1,M/bw)
ys[i,] <- dchi(s/bw,df=1,optim.out$par)/length(x)/bw
ys.2[i,] <- dchi(s/bw,df=1,M/bw)/length(x)/bw
}
ys.norm[i,] <- dnorm(s,M,bw)/length(x)
yy <- yy+dnorm(s,M,bw)/length(x)
}
matplot(t(ys),type="l")
matplot(t(ys.2),type="l")
matplot(t(ys.norm),type="l")
xlim <- range(s)
ylim <- c(0,max(apply(ys.norm,2,sum))*3)
plot(s,apply(ys,2,sum),type="h",xlim=xlim,ylim=ylim,col=2)
par(new=TRUE)
plot(s,apply(ys.2,2,sum),type="h",xlim=xlim,ylim=ylim,col=3)
par(new=TRUE)
plot(s,apply(ys.norm,2,sum),type="h",xlim=xlim,ylim=ylim,col=4)