Я хочу сравнить эталонное распределение d_1
с выборкой d_2
, нарисованной пропорционально размеру w_1
с использованием расстояния Колмогорова – Смирнова.
Учитывая, что d_2
является взвешенным, я рассматривал возможность учета этого с помощью взвешенной эмпирической кумулятивной функции распределения в R (с использованием ewcdf {spatstat}
).
Пример ниже показывает, что я, вероятно, неправильно указал веса, потому что когда lenght(d_1) == lenght(d_2)
Колмогоров – Смирнов не дает значение 0.
Может кто-то помочь мне с этим? Для наглядности см. Воспроизводимый пример ниже.
#loop for testing sample sizes 1:length(d_1)
d_stat <- data.frame(1:1000, rep(NA, 1000))
names(d_stat) <- c("sample_size", "ks_distance")
for (i in 1:1000) {
#reference distribution
d_1 <- rpois(1000, 500)
w_1 <- d_1/sum(d_1)
m_1 <- data.frame(d_1, w_1)
#sample from the reference distribution
m_2 <-m_1[(sample(nrow(m_1), size=i, prob=w_1, replace=F)),]
d_2 <- m_2$d_1
w_2 <- m_2$w_1
#ewcdf for the reference distribution and the sample
f_d_1 <- ewcdf(d_1)
f_d_2 <- ewcdf(d_2, 1/w_2, normalise=F, adjust=1/length(d_2))
#kolmogorov-smirnov distance
d_stat[i,2] <- max(abs(f_d_1(d_2) - f_d_2(d_2)))
}
d_stat[1000,2]