커널 밀도를 추정하여 경험적 확률 분포를 생성하는 데 사용하는 데이터 세트가 있습니다. 지금은 MASS 패키지의 R kde2d
을 사용하고 있습니다. 확률 분포를 추정 한 후 x 축을 따라 2D 분포의 조각에서 표본 추출을 위해 sample
을 사용합니다. 나는 here와 매우 비슷하게 sample
을 사용합니다. 예제 코드이변수 기본 격자로 커널 밀도 추정기에서 시뮬레이트
library(MASS)
set.seed(123)
x = rnorm(100, 1, 0.1)
set.seed(456)
y = rnorm(100, 1, 0.5)
den <- kde2d(x, y, n = 50, lims = c(-2, 2, -2, 2))
#to plot this 2d kde:
#library(lattice)
#persp(den)
conditional_probabilty_density = list(x = den$y, y = den$z[40, ])
#to plot the slice:
#plot(conditional_probabilty_density)
simulated_sample = sample(conditional_probabilty_density$x, size = 10, replace = TRUE, prob = conditional_probabilty_density$y)
den
과 같을 것이다을 내 데이터가 잘 그리드 단위를 필요로 변동이 많은,이 알려진 영역이이
것 같습니다. 다른 영역에는 기본적으로 데이터 포인트가 없으며 아무 것도 진행되지 않습니다. 나는 단지 n
파라미터 인 kde2d
을 매우 높은 숫자로 설정하여 모든 곳에서 좋은 데이터를 얻을 수 있다면 좋을 것입니다. 아아, 메모리 제약으로 인해 불가능합니다.
그래서 내가 kde2d
함수를 수정하여 일정하지 않은 세밀도를 가질 수 있다고 생각한 것입니다.
Here은 kde2d 함수의 소스 코드입니다. 하나는 라인
gy <- seq.int(lims[3L], lims[4L], length.out = n[2L])
을 수정하고 y 축에달라고 무엇이든 단위 넣을 수 있습니다. 예를 지정된 위치에
a <- seq(-1, 0, 0.5)
gy <- c(a, seq.int(0.1, 2, length.out = n[2L]-length(a)))
그리고 수정 된 kde2d
반환 커널 밀도 추정하십시오. 아주 잘 작동합니다. 지금
문제가, 난 더 이상 x 축을 따라 조각에서 샘플 sample
을 사용할 수 있다고 가정하자. 분포의 왼쪽에있는 부분이 훨씬 더 세밀하므로 sample
에 의해 샘플링 될 가능성이 더 높습니다.
필자가 필요로하는 적절한 눈금을 갖기 위해 할 수있는 일은 무엇입니까? 적절한 밀도에 따라 배포판에서 샘플링합니까? 정말 고마워.