天天看點

拓端tecdat|R語言輔導使用 LOWESS技術圖分析邏輯回歸中的函數形式

當我們在回歸模型中包含連續變量作為協變量時,重要的是我們使用正确的(或近似正确的)函數形式。例如,對于連續結果Y和連續協變量X,可能是Y的期望值是X和X ^ 2的線性函數,而不是X的線性函數。一種簡單但通常有效的方法是簡單地檢視Y對X的散點圖,以直覺地評估。

對于我們通常使用邏輯回歸模組化的二進制結果,事情并不那麼容易(至少在嘗試使用圖形方法時)。首先,Y對X的散點圖現在完全沒有關于Y和X之間關聯的形狀的資訊,是以在邏輯回歸模型中應該如何包含X. 為了說明,使用R let模拟一些(X,Y)資料,其中Y遵循邏輯回歸,其中X在模型中線性進入:

set.seed(1234)
n < -  1000
x < -  rnorm(n)
xb < -  -2 + x
pr < -  exp(xb)/(1 + exp(xb))
y < -  1 *(runif(n)<pr)      

現在,如果我們将Y映射到X,我們得到以下結果

由于Y的二進制性質,這完全沒有關于Y如何依賴X的資訊。

LOWESS技術圖

解決這個問題的一種方法是繪制單個(Y,X)值,而不是繪制Y的平均值随X變化的平滑線。最簡單的平滑類型是運作平均值,其中在給定值X = x的情況下,該線等于Y值的平均值(可能以某種方式權重)。然後将每個X值的平均值連接配接起來以得到平滑的線。

所述​​LOWESS技術​​是稍微更複雜的版本,其中,代替在X = x的鄰域計算Y值的一個(可能權重的)平均值,我們拟合回歸線(例如,線性)到資料圍繞X = X 。通過這樣做,我們假設局部YX關聯是線性的,但不假設它是全局線性的。這個優于簡單均值的一個優點是我們需要更少的資料來獲得Y依賴于X的良好估計。

檢查邏輯回歸的函數形式

這給出了 該圖表明Y的平均值在X中不是線性的,但可能是二次的。我們如何将這與我們從X線性進入的模型生成資料的事實相協調?解釋是在邏輯回歸中,我們将Y = 1的機率的​​logit​​模組化為預測變量的函數,而不是機率本身。對于不接近零或一的機率,logit函數實際上非常接近線性,而在機率不接近零或一的資料集中,這不是問題。

拓端tecdat|R語言輔導使用 LOWESS技術圖分析邏輯回歸中的函數形式

我們可以通過繪制為我們計算的估計機率(Y的平均值)的logit來克服這個問題。在​​Stata中​​,lowess指令有一個logit選項,它給出了一個平滑的logit對X的圖。在R中我們可以寫一個簡短的函數來做同樣的事情:

logitloess < -  function(x,y,s){

logit < -  function(pr){
 }

if(missing(s)){
  locspan < -  0.7
} else {
  locspan < -  s
}

 pi < -  pmax(pmin(loessfit,0.9999),0.0001)
logitfitted < -  logit(pi)

plot(x,logitfitted,ylab =“logit”)

}      

為了生成平滑的logit圖,我們現在隻需用X和Y調用我們的函數:

logitloess(X,Y)      
拓端tecdat|R語言輔導使用 LOWESS技術圖分析邏輯回歸中的函數形式

還需要注意的是,在X值很少的區域,估計的logit會更加不精确。這裡我們從正态分布生成X,我們可以從圖中看到隻有少數X值小于-2或大于+2(正如我們所期望的那樣!)。是以,我們不應過分關注X空間的這些區域中的估計logit值。

測試具有二次X效應的情況

作為另一個例子,我們現在重新模拟我們的資料,但是這次指定Y = 1的機率的logit是協變量X的二次函數,而不是線性的:

set.seed(12345)
n < -  1000
x < -  rnorm(n)
xb < -  -2 + x ^ 2
pr < -  exp(xb)/(1 + exp(xb))
y < -  1 *(runif(n)<pr)
logitloess(X,Y)      
拓端tecdat|R語言輔導使用 LOWESS技術圖分析邏輯回歸中的函數形式

注意事項

我們在這裡看到的方法顯然并不完美,在不同情況下或多或少會有用。對于小資料集(例如n = 50),實際上沒有足夠的資料來非參數地估計Y的平均值如何依賴于X,是以并不是真正有用。即使有大型資料集,黃土圖中建議的功能形式也可能看起來很奇怪,純粹是因為不精确,因為X空間/分布的某些部分沒有太多資料。