Eu tenho ~ 1 milhão de pontos de dados. Aqui está o link para o arquivo data.txt. Cada um deles pode ter um valor entre 0 e 145. É um conjunto de dados discreto. Abaixo está o histograma do conjunto de dados. No eixo x é a contagem (0-145) e no eixo y é a densidade.
fonte de dados : eu tenho cerca de 20 objetos de referência e 1 milhão de objetos aleatórios no espaço. Para cada um desses 1 milhão de objetos aleatórios, calculei a distância de Manhattan em relação a esses 20 objetos de referência. No entanto, eu considerei a menor distância entre esses 20 objetos de referência. Então, eu tenho 1 milhão de distâncias de Manhattan (que você pode encontrar no link para o arquivo fornecido no post)
Tentei ajustar as distribuições binomiais de Poisson e Negativas a esse conjunto de dados usando R. Eu achei o ajuste resultante das distribuições binomiais negativas parece razoável. Abaixo está a curva ajustada (em azul).
Objetivo final : Depois de ajustar adequadamente essa distribuição, gostaria de considerá-la uma distribuição aleatória de distâncias. Na próxima vez em que calcular a distância (d) de qualquer objeto a esses 20 objetos de referência, devo saber se o (d) é significativo ou apenas parte da distribuição aleatória.
Para avaliar a qualidade do ajuste, calculei o teste do qui-quadrado usando R com as frequências e probabilidades observadas que obtive do ajuste binomial negativo. Embora a curva azul se ajuste perfeitamente à distribuição, o valor de P retornado pelo teste do qui quadrado é extremamente baixo.
Isso me deixou um pouco confuso. Eu tenho duas perguntas relacionadas:
A escolha da distribuição binomial negativa para esse conjunto de dados é apropriada?
Se o valor P do teste do qui quadrado é tão baixo, devo considerar outra distribuição?
Abaixo está o código completo que eu usei:
# read the file containing count data
data <- read.csv("data.txt", header=FALSE)
# plot the histogram
hist(data[[1]], prob=TRUE, breaks=145)
# load library
library(fitdistrplus)
# fit the negative binomial distribution
fit <- fitdist(data[[1]], "nbinom")
# get the fitted densities. mu and size from fit.
fitD <- dnbinom(0:145, size=25.05688, mu=31.56127)
# add fitted line (blue) to histogram
lines(fitD, lwd="3", col="blue")
# Goodness of fit with the chi squared test
# get the frequency table
t <- table(data[[1]])
# convert to dataframe
df <- as.data.frame(t)
# get frequencies
observed_freq <- df$Freq
# perform the chi-squared test
chisq.test(observed_freq, p=fitD)