Regression

我應該如何在[0,∞][0,∞][0, infty]範圍?

  • March 17, 2015

我有一個從 0 到無窮大的因變量,其中 0 實際上是正確的觀察值。我了解審查和 Tobit 模型僅適用於實際值部分未知或丟失,在這種情況下,數據被稱為截斷。有關此線程中審查數據的更多信息。

但這裡的 0 是屬於總體的真實值。在此數據上運行 OLS 會遇到一個特別煩人的問題,即進行負估計。我應該如何建模?

> summary(data$Y)
  Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  0.00    0.00    0.00    7.66    5.20  193.00 
> summary(predict(m))
  Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 -4.46    2.01    4.10    7.66    7.82  240.00 
> sum(predict(m) < 0) / length(data$Y)
[1] 0.0972098

事態發展

閱讀答案後,我報告了使用略有不同的估計函數的 Gamma 障礙模型的擬合。結果讓我很驚訝。首先讓我們看一下DV。顯而易見的是極其肥尾的數據。這對擬合度的評估產生了一些有趣的影響,我將在下面評論:

在此處輸入圖像描述

quantile(d$Y, probs=seq(0, 1, 0.1))
       0%        10%        20%        30%        40%        50%        60%        70%        80%        90%       100% 
 0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.286533   3.566165  11.764706  27.286630 198.184818 

我構建了 Gamma 跨欄模型如下:

d$zero_one = (d$Y > 0)
logit = glm(zero_one ~ X1*log(X2) + X1*X3, data=d, family=binomial(link = logit))
gamma = glm(Y ~ X1*log(X2) + X1*X3, data=subset(d, Y>0), family=Gamma(link = log))

最後,我使用三種不同的技術評估了樣本內擬合:

# logit probability * gamma estimate
predict1 = function(m_logit, m_gamma, data)
{
 prob = predict(m_logit, newdata=data, type="response")
 Yhat = predict(m_gamma, newdata=data, type="response")
 return(prob*Yhat)
}

# if logit probability < 0.5 then 0, else logit prob * gamma estimate 
predict2 = function(m_logit, m_gamma, data)
{
 prob = predict(m_logit, newdata=data, type="response")
 Yhat = predict(m_gamma, newdata=data, type="response")
 return(ifelse(prob<0.5, 0, prob)*Yhat)
}

# if logit probability < 0.5 then 0, else gamma estimate
predict3 = function(m_logit, m_gamma, data)
{
 prob = predict(m_logit, newdata=data, type="response")
 Yhat = predict(m_gamma, newdata=data, type="response")
 return(ifelse(prob<0.5, 0, Yhat))
}

起初,我通過通常的度量來評估擬合:AIC、零偏差、平均絕對誤差等。但是查看上述函數的分位數絕對誤差突出了一些與結果為 0 的高概率和極端肥尾巴。當然,誤差隨著 Y 值的增加呈指數增長(Max 處的 Y 值也非常大),但更有趣的是,嚴重依賴 logit 模型來估計 0 會產生更好的分佈擬合(我不會不知道如何更好地描述這種現象):

quantile(abs(d$Y - predict1(logit, gamma, d)), probs=seq(0, 1, 0.1))
          0%           10%           20%           30%           40%           50%           60%           70%           80%           90%          100% 
  0.00320459    1.45525439    2.15327192    2.72230527    3.28279766    4.07428682    5.36259988    7.82389110   12.46936416   22.90710769 1015.46203281 
quantile(abs(d$Y - predict2(logit, gamma, d)), probs=seq(0, 1, 0.1))
        0%         10%         20%         30%         40%         50%         60%         70%         80%         90%        100% 
  0.000000    0.000000    0.000000    0.000000    0.000000    0.309598    3.903533    8.195128   13.260107   24.691358 1015.462033 
quantile(abs(d$Y - predict3(logit, gamma, d)), probs=seq(0, 1, 0.1))
        0%         10%         20%         30%         40%         50%         60%         70%         80%         90%        100% 
  0.000000    0.000000    0.000000    0.000000    0.000000    0.307692    3.557285    9.039548   16.036379   28.863912 1169.321773 

審查與膨脹與障礙

審查、障礙和膨脹模型通過在現有概率密度之上添加點質量來工作。不同之處在於添加質量的位置以及添加方式。現在,只考慮在 0 處添加一個點質量,但這個概念很容易推廣到其他情況。

所有這些都意味著某些變量的兩步數據生成過程:

  1. 繪製判斷是否或者.
  2. 如果,繪製以確定的值.

充氣和跨欄模型

膨脹(通常是零膨脹)和障礙模型都通過明確和單獨指定來工作,因此 DGP 變為:

  1. 畫一次從獲得實現.
  2. 如果, 放.
  3. 如果, 從並設置.

在充氣模型中,. 在跨欄模型中,. 這是唯一的區別

這兩種模型都導致具有以下形式的密度:

在哪裡是指標函數。也就是說,點質量只是簡單地添加到零,在這種情況下,質量只是. 您可以自由估算直接,或設置 對於一些可逆的像 logit 函數。也可以依賴. 在這種情況下,該模型通過“分層”邏輯回歸來工作在另一個回歸模型下.

審查模型

刪失模型還會在邊界處增加質量。他們通過“切斷”一個概率分佈,然後在那個邊界“聚集”多餘的部分來實現這一點。概念化這些模型的最簡單方法是根據潛在變量帶 CDF. 然後. 這是一個非常通用的模型;回歸是一種特殊情況,其中依賴於取決於.

觀察到的然後假設與經過:

這意味著形式的密度

並且可以很容易地擴展。

把它放在一起

看密度:

並註意它們都具有相同的形式:

因為他們實現了相同的目標:為通過添加點質量到一些密度. 膨脹/障礙模型集通過外部伯努利過程。刪失模型確定通過“切斷”在邊界處,然後在該邊界處“聚集”剩餘的質量。

事實上,你總是可以假設一個“看起來像”審查模型的障礙模型。考慮一個障礙模型,其中參數化為和參數化為. 然後你可以設置. 逆 CDF 始終是邏輯回歸中的有效鏈接函數,並且邏輯回歸被稱為“邏輯”的一個原因實際上是標準 logit 鏈接實際上是標準邏輯分佈的逆 CDF。

您也可以在這個想法上繞圈子:具有任何反向 CDF 鏈接(如 logit 或 probit)的伯努利回歸模型可以概念化為具有觀察 1 或 0 的閾值的潛在變量模型。刪失回歸是隱含潛在變量的障礙回歸是相同的.

你應該使用哪一個?

如果您有一個引人注目的“審查故事”,請使用審查模型。Tobit 模型(刪失高斯線性回歸的計量經濟學名稱)的一種經典用法是對“最高編碼”的調查響應進行建模。工資通常以這種方式報告,所有高於某個臨界值(例如 100,000)的工資都被編碼為 100,000。這與截斷不同,工資超過 100,000 的個人根本不會被觀察。這可能發生在僅對工資低於 100,000 的個人進行的調查中。

正如 whuber 在評論中所描述的,審查的另一個用途是當您使用精度有限的儀器進行測量時。假設您的測距設備無法區分 0 和. 然後你可以審查你的分佈.

否則,障礙或膨脹模型是安全的選擇。假設一般的兩步數據生成過程通常是沒有錯的,它可以提供一些您可能沒有的數據洞察力。

另一方面,您可以使用沒有審查故事的審查模型來創建與障礙模型相同的效果,而無需指定單獨的“開/關”過程。這是Sigrist 和 Stahel (2010)的方法,他們審查偏移的 gamma 分佈,就像在. 那篇論文特別有趣,因為它展示了這些模型的模塊化程度:您實際上可以對審查模型進行零膨脹(第 3.3 節),或者您可以將“潛在變量故事”擴展到幾個重疊的潛在變量(第 3.1 節)。

截斷

編輯:已刪除,因為此解決方案不正確

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

comments powered by Disqus