呼叫robustfit函式作穩健回歸
regress函式和regstats函式利用普通最小二乘法估計模型中的引數,引數的估計值受異常值的影響比較大。robustfit函式採用加權最小二乘法估計模型中的引數,受異常值的影響就比較小。robustfit函式用來作穩健的多重線性或廣義線性回歸分析,下面介紹robustfit函式的用法。
1.4.1.robustfit函式的用法
robustfit函式有以下幾種呼叫方式:
b = robustfit(x,y)
b = robustfit(x,y,wfun,tune)
b = robustfit(x,y,wfun,tune,const)
[b,stats] = robustfit(…)
(1)b = robustfit(x,y)
返回多重線性回歸方程中係數向量β的估計值b,這裡的b為乙個1p×的向量。輸入引數x為自變數觀測值矩陣(或設計矩陣),它是的矩陣。與regress函式不同的是,預設情況下,robustfit函式自動在x第1列元素的左邊加入一列1,不需要使用者自己新增。輸入引數y為因變數的觀測值向量,是的列向量。robustfit函式把y或x中不確定資料nan作為缺失資料而忽略它們。np×1n×
(2)b = robustfit(x,y,wfun,tune)
用引數wfun指定加權函式,用引數tune 指定調節常數。wfun為字串,其可能的取值如表1-3所示。
表1-3 robustfit函式支援的加權函式
加權函式(wfun)
函式表示式
預設調節常數值
'andrews' sin(||)rwirrπ=⋅<
1.339
'bisquare'(預設值)
22(1)(||1)wrir=−⋅<
4.685
'cauchy' 21(1)wr=+
2.385
'fair' 1(1||)wr=+
1.400
'huber' 1max(1, ||)wr=
1.345
'logistic' tanh()wr=
1.205
'ols'
普通最小二乘,無加權函式
無'talwar'
(||1)wir=<
2.795
'welsch'
2rwe−=
2.985
若呼叫時沒有指定調節常數tune,則用表1-3中列出的預設調節常數值進行計算。表1-3中加權函式中的r通過下式計算residr =tunes1-h××
其中resid為上一步迭代的殘差向量,tune為調節常數,h是由最小二乘擬合得到的中心化槓桿值向量,s為誤差項的標準差的估計。s的計算公式為:s = mad/0.6745,其中mad為殘差絕對值的中位數,在正態分佈下,這個估計是無偏的。若x中有p列,計算mad時,將殘差絕對值向量的前p個最小值捨去。
使用者可以定義自己的權重函式,函式的輸入必須是殘差向量,輸出是權重向量。在呼叫robustfit函式時,把自定義權重函式的控制代碼(形如@myfun)作為wfun引數傳遞給robustfit函式,此時必須指定tune引數。
(3)b = robustfit(x,y,wfun,tune,const)
用引數const來控制模型中是否包含常數項。若const取值為 'on' 或1,則模型中包含常數項,此時自動在x第1列的左邊加入一列1,若const取值為 'off' 或0,則模型中不包含常數項,此時不改變x的值。
(4)[b,stats] = robustfit(…)
返回乙個結構體變數stats,它的字段包含了用於模型診斷的統計量。stats有以下字段:
• stats.ols_s — 普通最小二乘法得出的σ的估計(rmse);
• stats.robust_s — σ的穩健估計;
• stats.mad_s — 用殘差絕對值的中位數計算σ的估計;
• stats.s — σ的最終估計,是ols_s 和robust_s的加權平均與robust_s中的最大值;
• stats.se — 係數估計的標準誤差;
• stats.t — b與stats.se的比值;
• stats.p — t檢驗的p值;
• stats.covb — 係數向量的協方差矩陣的估計;
• stats.coeffcorr — 係數向量的相關係數矩陣的估計;
• stats.w — 穩健擬合的權重向量;
• stats.h — 最小二乘擬合的中心化槓桿值向量;
• stats.r — 矩陣x的qr分解中的r因子
R語言呼叫rlm函式生成穩建回歸模型
說明 資料中的孤立點會對回歸直線的正確性帶來一定的影響,除了去掉孤立點,我們也可以用穩建回歸來處理包括孤立點的資料集。資料準備 準備好包含孤立點,並且孤立點會影響回歸模型準確度的資料集。使用quartet資料集。library car data quartet 操作plot quartet x,qu...
Qt函式作函式引數
類裡寫個要傳的函式 切記 函式一定要是靜態函式,前面加個static 如類名為 myobj 函式為 static void myfun int a,int b 自定義函式 函式為引數的函式 void fun void hh int,int hh 4,5 或者 void fun void myobj ...
在main函式之前呼叫函式,以及對設計的作用
前幾天為新員工寫乙個簡單的測試框架,可讓他們方便的寫測試用例並且執行。期間遇到乙個問題就是如何讓他們增加測試用例而用不影響測試框架的 c 的單件模式可以解決這個問題,但是其中乙個難點是要在main之前註冊單件。c 可以通過建構函式來實現註冊,c如何註冊?最後查了下資料,原來可以定義在main之前呼叫...