將負二項分佈擬合到大計數數據
我有大約 100 萬個數據點。這是文件data.txt的鏈接,它們每個都可以取 0 到 145 之間的值。這是一個離散數據集。下面是數據集的直方圖。x 軸上是計數 (0-145),y 軸上是密度。
數據來源:我在空間中有大約 20 個參考對象和 100 萬個隨機對象。對於這 100 萬個隨機對像中的每一個,我計算了相對於這 20 個參考對象的曼哈頓距離。但是我只考慮了這 20 個參考對像中的最短距離。所以我有 100 萬個曼哈頓距離(您可以在帖子中給出的文件鏈接中找到)
我嘗試使用 R 將泊松和負二項式分佈擬合到該數據集。我發現負二項式分佈產生的擬合似乎是合理的。下面是擬合曲線(藍色)。
最終目標:一旦我適當地擬合了這個分佈,我想將此分佈視為距離的隨機分佈。下次當我計算任何對像到這 20 個參考對象的距離 (d) 時,我應該能夠知道 (d) 是顯著的還是只是隨機分佈的一部分。
為了評估擬合優度,我使用 R 和從負二項擬合中得到的觀察頻率和概率計算了卡方檢驗。儘管藍色曲線非常適合分佈,但從卡方檢驗返回的 P 值極低。
這讓我有點困惑。我有兩個相關的問題:
- 為這個數據集選擇負二項分佈是否合適?
- 如果卡方檢驗 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)
首先,在樣本量足夠大的情況下,適合度測試或特定分佈測試的優度通常會拒絕原假設,因為我們幾乎不會遇到這樣的情況,即數據完全來自特定分佈,而且我們也確實考慮了所有相關的(可能未測量的)協變量,解釋了主題/單位之間的進一步差異。然而,在實踐中,這種偏差可能是無關緊要的,眾所周知,可以使用許多模型,即使它們與分佈假設有一些偏差(最著名的是關於具有正態誤差項的回歸模型中殘差的正態性)。
其次,負二項式模型是計數數據的一個相對合乎邏輯的默認選擇(只能是)。雖然我們沒有那麼多細節,而且數據可能有明顯的特徵(例如關於它是如何產生的),這表明一些更複雜的東西。例如,可以考慮使用負二項式回歸計算關鍵協變量。