R

將負二項分佈擬合到大計數數據

  • April 4, 2016

我有大約 100 萬個數據點。這是文件data.txt的鏈接,它們每個都可以取 0 到 145 之間的值。這是一個離散數據集。下面是數據集的直方圖。x 軸上是計數 (0-145),y 軸上是密度。

數據來源:我在空間中有大約 20 個參考對象和 100 萬個隨機對象。對於這 100 萬個隨機對像中的每一個,我計算了相對於這 20 個參考對象的曼哈頓距離。但是我只考慮了這 20 個參考對像中的最短距離。所以我有 100 萬個曼哈頓距離(您可以在帖子中給出的文件鏈接中找到)

我嘗試使用 R 將泊松和負二項式分佈擬合到該數據集。我發現負二項式分佈產生的擬合似乎是合理的。下面是擬合曲線(藍色)。

最終目標:一旦我適當地擬合了這個分佈,我想將此分佈視為距離的隨機分佈。下次當我計算任何對像到這 20 個參考對象的距離 (d) 時,我應該能夠知道 (d) 是顯著的還是只是隨機分佈的一部分。

在此處輸入圖像描述

為了評估擬合優度,我使用 R 和從負二項擬合中得到的觀察頻率和概率計算了卡方檢驗。儘管藍色曲線非常適合分佈,但從卡方檢驗返回的 P 值極低。

這讓我有點困惑。我有兩個相關的問題:

  1. 為這個數據集選擇負二項分佈是否合適?
  2. 如果卡方檢驗 P 值如此之低,我應該考慮另一種分佈嗎?

以下是我使用的完整代碼:

# 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)

首先,在樣本量足夠大的情況下,適合度測試或特定分佈測試的優度通常會拒絕原假設,因為我們幾乎不會遇到這樣的情況,即數據完全來自特定分佈,而且我們也確實考慮了所有相關的(可能未測量的)協變量,解釋了主題/單位之間的進一步差異。然而,在實踐中,這種偏差可能是無關緊要的,眾所周知,可以使用許多模型,即使它們與分佈假設有一些偏差(最著名的是關於具有正態誤差項的回歸模型中殘差的正態性)。

其次,負二項式模型是計數數據的一個相對合乎邏輯的默認選擇(只​​能是)。雖然我們沒有那麼多細節,而且數據可能有明顯的特徵(例如關於它是如何產生的),這表明一些更複雜的東西。例如,可以考慮使用負二項式回歸計算關鍵協變量。

引用自:https://stats.stackexchange.com/questions/205403

comments powered by Disqus