2
私は与えられた関数(f(x)と呼ぶ)を持っています。私はモンテカルロ法を使ってそれを正規化しました。私は確率密度関数を計算し、それを積分することから累積分布関数を得ました。R - 与えられた関数を使った逆累積分布法
f = function(x) ...
plot(f,xlim = c(0, 5), ylim = c(0, 1),main="f(x)")
mc.integral = function(f, n.iter = 1000, interval){
x = runif(n.iter, interval[1], interval[2])
y = f(x)
mean(y)*(interval[2] - interval[1])
}
MC = mc.integral(f, interval = c(0, 8))
print(MC)
densityFunction <- function(x){
return ((f(x)/MC))
}
distributionFunction <- function(x){
return (integrate(densityFunction,0,x)$value)
}
vd <- Vectorize(distributionFunction)
plot(vd,xlim = c(0, 8), ylim = c(0, 1),ylab = "y",main="E(f(x))")
今私の次のタスクは、サンプルを生成し、コルモゴロフ - スミルノフテストでそれをテストする方法/逆累積分布法を逆変換を使用することですが、私はR.で行うべきか分からない
私に助けてもらえますか?
ありがとう、私はそれで解決できると思う。しかし、通常のCDFやPDFは必要ないため、逆累積分布方式を使うべきだと思います。この場合、あなたのステップの修正は何ですか? – kr0tchy
Rの関数を逆にする方法については、[here](https://stackoverflow.com/questions/10081479/solving-for-the-inverse-of-a-function-in-r)を参照してください。あなたはそれを解決することができます。 – LAP
ありがとう – kr0tchy