2
나는 주어진 함수 (f (x)라고 부르 자)를 가지고 그것을 정규화하기 위해 Monte Carlo 방법을 사용했다. 나는 확률 밀도 함수를 계산했고 누적 분포 함수를 통합했다.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