r語言 擬合優度 - CSDN

2020-12-11 CSDN技術社區

 

在依賴模型得出結論或預測未來結果之前,我們應儘可能檢查我們假設的模型是否正確指定。也就是說,數據不會與模型所做的假設衝突。對於二元結果,邏輯回歸是最流行的建模方法。在這篇文章中,我們將看一下 Hosmer-Lemeshow邏輯回歸的擬合優度檢驗。

 

Hosmer-Lemeshow擬合優度檢驗


Hosmer-Lemeshow擬合優度檢驗是基於根據預測的概率或風險將樣本分開。具體而言,基於估計的參數值,對於樣本中的每個觀察,基於每個觀察的協變量值計算概率。

 

然後根據樣本的預測概率將樣本中的觀察分成g組(我們回過頭來選擇g)。假設(通常如此)g = 10。然後第一組由具有最低10%預測概率的觀察組成。第二組由預測概率次之小的樣本的10%等組成。

 在實踐中,只要我們的一些模型協變量是連續的,每個觀測將具有不同的預測概率,因此預測的概率將在我們形成的每個組中變化。為了計算我們預期的觀察數量,Hosmer-Lemeshow測試取組中預測概率的平均值,並將其乘以組中的觀察數。測試也執行相同的計算,然後計算Pearson擬合優度統計量

 

   

選擇組的數量


就我所見,關於如何選擇組數g的指導很少。Hosmer和Lemeshow的模擬結論是基於使用的,建議如果我們在模型中有10個協變量 。

直觀地說,使用較小的g值可以減少檢測錯誤規範的機會。 

 

R 

首先,我們將使用一個協變量x模擬邏輯回歸模型中的一些數據,然後擬合正確的邏輯回歸模型。 

n < - 100
x < - rnorm(n)
xb < - x
pr < - exp(xb)/(1 + exp(xb))
y < - 1 *(runif(n)<pr)
mod < - glm(y~x,family = binomial)

接下來,我們將結果y和模型擬合概率傳遞給hoslem.test函數,選擇g = 10組:

這給出p = 0.49,表明沒有合適的不良證據。 我們還可以從我們的hl對象中獲得一個觀察到的與預期的表:

cbind(hl$observed,hl$expected)
y0 y1 yhat0 yhat1
[0.0868,0.219] 8 2 8.259898 1.740102
(0.219,0.287] 7 3 7.485661 2.514339
(0.287,0.329] 7 3 6.968185 3.031815
(0.329,0.421] 8 2 6.194245 3.805755
(0.421,0.469] 5 5 5.510363 4.489637
(0.469,0.528] 4 6 4.983951 5.016049
(0.528,0.589] 5 5 4.521086 5.478914
(0.589,0.644] 2 8 3.833244 6.166756
(0.644,0.713] 6 4 3.285271 6.714729
(0.713,0.913] 1 9 1.958095 8.041905

為了幫助我們理解計算,現在讓我們自己手動執行測試。首先,我們計算模型預測概率,然後根據預測概率的十分位數對觀測值進行分類:

接下來,我們循環通過組1到10,計算觀察到的0和1的數量,並計算預期的0和1的數量。為了計算後者,我們找到每組中預測概率的均值,並將其乘以組大小,這裡是10:

最後,我們可以通過表格的10x2單元格中的(觀察到的預期)^ 2 /預期的總和來計算Hosmer-Lemeshow檢驗統計量:


[1] 7.486643

與hoslem.test函數的測試統計值一致。

改變組的數量
接下來,讓我們看看測試的p值如何變化,因為我們選擇g = 5,g = 6,直到g = 15。我們可以通過一個簡單的for循環來完成:

[1] 0.4683388
[1] 0.9216374
[1] 0.996425
[1] 0.9018581
[1] 0.933084
[1] 0.4851488
[1] 0.9374381
[1] 0.9717069
[1] 0.5115724
[1] 0.4085544
[1] 0.8686347

雖然p值有所改變,但它們都顯然不重要,所以他們給出了類似的結論,沒有證據表明不合適。因此,對於此數據集,選擇不同的g值似乎不會影響實質性結論。

通過模擬檢查Hosmer-Lemeshow測試


要完成,讓我們進行一些模擬,以檢查Hosmer-Lemeshow測試在重複樣本中的表現。首先,我們將從先前使用的相同模型重複採樣,擬合相同(正確)模型,並使用g = 10計算Hosmer-Lemeshow p值。我們將這樣做1000次,並將測試p值存儲在一個數組中:

完成後,我們可以計算出p值小於0.05的比例。由於此處正確指定了模型,因此我們希望這種所謂的類型1錯誤率不大於5%:


[1] 0.04

因此,在1,000次模擬中,Hosmer-Lemeshow測試在4%的情況下給出了顯著的p值,表明不合適。所以測試錯誤地表明在我們預期的5%限制內不合適 - 它似乎工作正常。

現在讓我們改變模擬,以便我們適合的模型被錯誤地指定,並且應該很難適應數據。希望我們會發現Hosmer-Lemeshow測試在5%的時間內正確地找到了不合適的證據。具體來說,我們現在將生成跟隨具有協變量的邏輯模型,但我們將繼續使用線性協變量擬合模型,以便我們的擬合模型被錯誤地指定。 

 

我們發現,計算p值小於0.05的比例


[1] 0.648

因此,Hosmer-Lemeshow測試為我們提供了65%的不合適的重要證據。

 

相關焦點

  • 擬合優度 - CSDN
    01 擬合優度是什麼? 下面言歸正傳,敲黑板、劃重點了啊!所謂「擬合優度」,是回歸分析中用來檢驗樣本數據點聚集在回歸線周圍的密集程度,用於評價回歸方程對樣本觀測值的擬合程度。02 擬合優度是怎麼來的?
  • R語言——交叉驗證法計算線性回歸模型擬合優度的第三種R方
    本來打算這周繼續更新一篇LaTex的小短文,但是貌似我已經很久沒有寫R語言相關的東西了。想來想去,今天就寫一篇和R語言有關的,畢竟不能忘記初心呀!凡是學過計量的同學,哪怕只記得一點點皮毛,對於R方和調整R方也應該是再熟悉不過了。R方和調整R方是判斷回歸模型擬合度的最為方便簡單的指標,一般來說,數值越大代表模型的擬合度越好。
  • 回歸分析的「擬合優度」是啥
    "前面我們學習了回歸分析的基本理論和大致操作,那麼分析結果中都會提到一個「擬合優度」的指標,那麼它到底是怎麼來的?代表了什麼,又怎麼來判定擬合度?今天,小學僧就和大家一起來學習一下。01. 擬合優度是什麼?
  • r語言 tseries - CSDN
    ( m2=arima(prop, order = c(1,0,0),method=」ML」, include.mean = F) ) #用AR(1)模型擬合,不含截距項。tsdiag(m1) #對估計進行診斷,判斷殘差是否為白噪聲summary(m1)r=m1$residuals #用r來保存殘差Box.test(r,type=」Ljung-Box」,lag=6, fitdf=1)#對殘差進行純隨機性檢驗,fitdf表示殘差減少的自由度AutocorTest(m1$resid) #加載FinTS包
  • 線性擬合與曲線擬合,直接在圖上添加擬合曲線、擬合方程、判別係數...
    1、什麼是線性擬合?線性擬合,顧名思義,針對兩組數據或多組數據,找出一條最佳擬合直線,常用於處理與自變量呈線性關係的因變量。線性擬合是數據處理的常用方法,擬合的目的是對呈現一定數值關係的因變量與自變量找出最佳擬合方程,一般用線性回歸來實現。
  • R語言和Python實現回歸分析
    r的取值範圍是[-1,1],r=1表示完全正相關!r=-1表示完全負相關!r=0表示完全不相關。為什麼要對相關係數進行顯著性檢驗?擬合優度:顧名思義,擬合優度就是衡量一個回歸做的好不好的指標,定義為 源數據 R語言data<-read.table("c:/Users/baihua/Desktop/ols.csv",header
  • R語言回歸中的Hosmer-Lemeshow擬合優度檢驗
    在這篇文章中,我們將看一下 Hosmer-Lemeshow邏輯回歸的擬合優度檢驗。Hosmer-Lemeshow擬合優度檢驗Hosmer-Lemeshow擬合優度檢驗是基於根據預測的概率或風險將樣本分開。具體而言,基於估計的參數值,對於樣本中的每個觀察,基於每個觀察的協變量值計算概率。
  • 二次多項式擬合曲線 - CSDN
    多項式擬合一次函數運行結果:100運行結果:[4.00355516 1.55927961]# 還可以用 poly1d 生成一個以傳入的 coeff 為參數的多項式函數:多項式擬合正弦函數最小二乘擬合運行結果:
  • 對比R語言和Python,教你實現回歸分析
    r的取值範圍是[-1,1],r=1表示完全正相關!r=-1表示完全負相關!r=0表示完全不相關。為什麼要對相關係數進行顯著性檢驗?擬合優度:顧名思義,擬合優度就是衡量一個回歸做的好不好的指標,定義為 源數據 R語言data<-read.table("c:/Users/baihua/Desktop/ols.csv",header
  • r語言中test - CSDN
    在學習R語言的過程中,經常會遇到前面學習過的函數但到後面再次看到忘記了用法,在kaggle實踐中也會遇到,我以前的做法是打開書本,評印象查找,但是效率極低,現在,我通過有道雲筆記 將《R語言實戰》中的所有函數按照書本出現的順序編輯成一篇文章,然後通過檢索一鍵定位。具體做法如下:1、複製下面的函數。
  • python散點圖中如何添加擬合線並顯示擬合方程與R方?
    CDA數據分析師 出品polyfit()函數可以使用最小二乘法將一些點擬合成一條曲線.numpy.polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False)# x:要擬合點的橫坐標# y:要擬合點的縱坐標# deg:自由度.例如:自由度為2,那麼擬合出來的曲線就是二次函數,自由度是3,擬合出來的曲線就是3次函數首先我們先來構造一下需要被擬合的散點
  • r語言一元回歸模型專題及常見問題 - CSDN
    轉載自:http://blog.fens.me/r-linear-regression/前言在我們的日常生活中,存在大量的具有相關性的事件,比如大氣壓和海拔高度,海拔越高大氣壓強越小;人的身高和體重,普遍來看越高的人體重也越重。
  • r語言檢驗 是否相關 - CSDN
    #分析:按題意,需檢驗#H0: μ ≤ 225 H1: μ > 225#此問題屬於單邊檢驗問題,可以使用R語言t.test#t.test(x,y=NULL,alternative=c(「two.sided」,「less」,「greater」),mu=0,paired=FALSE,var.equal=FALSE,conf.level=0.95
  • R語言 | 回歸分析(一)
    R: The R Project for Statistical Computinghttps://www.r-project.org/RStudio:https://rstudio.com/在生活中,我們遇到過這樣的問題:人的身高和體重有關係嗎?於是,你開始記錄並觀察許多人的身高和體重,得到相應的散點圖。
  • R語言 | 回歸分析(四)
    R: The R Project for Statistical Computinghttps://www.r-project.org/RStudio:https://rstudio.com/今天是我們最後一期R語言入門系列。從去年11月份到今天,中間也因學業停更了很久,好在堅持了下來。
  • r語言 檢驗p值 - CSDN
    輸入1: rdata = matrix(rnorm(1000* 6, 0, 3), 6) rvar = apply(rdata, 2, var) mean(rvar)結果1: 醫學統計與R語言:對數正態分布與卡方分布醫學統計與R語言:qvalue醫學統計與R語言:Meta 回歸作圖(Meta regression Plot)醫學統計與R語言:aggregate.plot了解一下醫學統計與R語言:有序Probit回歸(Ordered Probit Model)醫學統計與R語言:Probit回歸模型及邊際效應
  • matlab插值擬合(二)
    1 基於最小二乘法的多項式擬合函數:polyfitp = polyfit(x,y,n),待擬合的多項式為p(1)*x^n + p(2)*x^(n-1) +…+ p(n)*x + p(n+1),其中x是擬合數據的自變量,y是因變量,n是擬合多項式的階數,如當n為1時,即為一次線性擬合。
  • R語言基於ARMA-GARCH-VaR模型擬合和預
    p=3186 本文顯示了如何基於潛在的ARMA-GARCH過程(當然也涉及更廣泛意義上的QRM)來擬合和預測風險價值(VaR)。1 從ARMA-GARCH進程模擬(log-return)數據我們考慮使用t 分布的ARMA(1,1)-GARCH(1,1)過程。模擬一條路徑(用於說明目的)。
  • matlab模型檢驗 - CSDN
    赤池信息準則:通過AIC作為衡量統計模型擬合優良性的一種標準。它建立在熵的概念基礎上,可以權衡所估計模型的複雜度和此模型擬合數據的優良性。根據不同參數組合的AIC值來判斷模型的好壞,AIC越小越好。正常做法是要進行多次滯後項的驗證,然後去評判擬合回歸的顯著性效果。)
  • R語言實戰:回歸
    本文內容來自《R 語言實戰》(R in Action, 2nd),有部分修改回歸的多面性簡單線性多項式