99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀R語(yǔ)言-如何處理違背回歸假設(shè)的問(wèn)題
R語(yǔ)言-如何處理違背回歸假設(shè)的問(wèn)題
2017-05-31
收藏

R語(yǔ)言-如何處理違背回歸假設(shè)的問(wèn)題

我們已經(jīng)花費(fèi)了不少篇幅來(lái)學(xué)習(xí)回歸診斷,你可能會(huì)問(wèn):“如果發(fā)現(xiàn)了問(wèn)題,那么能做些什么呢?”有四種方法可以處理違背回歸假設(shè)的問(wèn)題:
刪除觀測(cè)點(diǎn);
變量變換;
添加或刪除變量;
使用其他回歸方法。
下面讓我們依次學(xué)習(xí)。

8.5.1 刪除觀測(cè)點(diǎn)
刪除離群點(diǎn)通??梢蕴岣邤?shù)據(jù)集對(duì)于正態(tài)假設(shè)的擬合度,而強(qiáng)影響點(diǎn)會(huì)干擾結(jié)果,通常也會(huì)被刪除。刪除最大的離群點(diǎn)或者強(qiáng)影響點(diǎn)后,模型需要重新擬合。若離群點(diǎn)或強(qiáng)影響點(diǎn)仍然存在,重復(fù)以上過(guò)程直至獲得比較滿意的擬合。
不過(guò),我對(duì)刪除觀測(cè)點(diǎn)持謹(jǐn)慎態(tài)度。若是因?yàn)閿?shù)據(jù)記錄錯(cuò)誤,或是沒(méi)有遵守規(guī)程,或是受試對(duì)象誤解了指導(dǎo)說(shuō)明,這種情況下的點(diǎn)可以判斷為離群點(diǎn),刪除它們是十分合理的。
不過(guò)在其他情況下,所收集數(shù)據(jù)中的異常點(diǎn)可能是最有趣的東西。發(fā)掘?yàn)楹卧撚^測(cè)點(diǎn)不同于其他點(diǎn),有助于你更深刻地理解研究的主題,或者發(fā)現(xiàn)其他你可能沒(méi)有想過(guò)的問(wèn)題。我們一些最偉大的進(jìn)步正是源自于意外地發(fā)現(xiàn)了那些不符合我們先驗(yàn)認(rèn)知的東西(抱歉,我說(shuō)得夸張了)。

8.5.2 變量變換
當(dāng)模型不符合正態(tài)性、線性或者同方差性假設(shè)時(shí),一個(gè)或多個(gè)變量的變換通??梢愿纳苹蛘{(diào)整模型效果。變換多用Y λ 替代Y, λ 的常見(jiàn)值和解釋見(jiàn)表8-5。

若Y是比例數(shù),通常使用logit變換[ln (Y/1-Y )]。
當(dāng)模型違反了正態(tài)假設(shè)時(shí),通??梢詫?duì)響應(yīng)變量嘗試某種變換。 car包中的powerTransform()函數(shù)通過(guò)λ 的最大似然估計(jì)來(lái)正態(tài)化變量X λ。代碼清單8-10是對(duì)數(shù)據(jù)states的應(yīng)用。

結(jié)果表明,你可以用Murder0.6來(lái)正態(tài)化變量Murder。由于0.6很接近0.5,你可以嘗試用平方根變換來(lái)提高模型正態(tài)性的符合程度。但在本例中, λ= 1的假設(shè)也無(wú)法拒絕(p=0.145),因此沒(méi)有強(qiáng)有力的證據(jù)表明本例需要變量變換,這與圖8-9的Q-Q圖結(jié)果一致。

當(dāng)違反了線性假設(shè)時(shí),對(duì)預(yù)測(cè)變量進(jìn)行變換常常會(huì)比較有用。 car包中的boxTidwell()函數(shù)通過(guò)獲得預(yù)測(cè)變量?jī)鐢?shù)的最大似然估計(jì)來(lái)改善線性關(guān)系。下面的例子為用州的人口和文盲率來(lái)預(yù)測(cè)謀殺率,對(duì)模型進(jìn)行了Box-Tidwell變換:

結(jié)果顯示,使用變換Population0.87和Illiteracy1.36能夠大大改善線性關(guān)系。但是對(duì)Population(p=0.75)和Illiteracy(p=0.54)的計(jì)分檢驗(yàn)又表明變量并不需要變換。這些結(jié)果與圖8-11的成分殘差圖是一致的。
響應(yīng)變量變換還能改善異方差性(誤差方差非恒定)。在代碼清單8-7中,你可以看到car包中spreadLevelPlot()函數(shù)提供的冪次變換應(yīng)用,不過(guò), states例子滿足了方差不變性,不需要進(jìn)行變量變換。
謹(jǐn)慎對(duì)待變量變換
統(tǒng)計(jì)學(xué)中流傳著一個(gè)很老的笑話:如果你不能證明A,那就證明B,假裝它就是A。(對(duì)于統(tǒng)計(jì)學(xué)家來(lái)說(shuō),這很滑稽好笑。)此處引申的意思是,如果你變換了變量,你的解釋必須基于變換后的變量,而不是初始變量。如果變換得有意義,比如收入的對(duì)數(shù)變換、距離的逆變換,解釋起來(lái)就會(huì)容易得多。但是若變換得沒(méi)有意義,你就應(yīng)該避免這樣做。比如,你怎樣解釋自殺意念的頻率與抑郁程度的立方根間的關(guān)系呢?

8.5.3 增刪變量
改變模型的變量將會(huì)影響模型的擬合度。有時(shí),添加一個(gè)重要變量可以解決我們已經(jīng)討論過(guò)的許多問(wèn)題,刪除一個(gè)冗余變量也能達(dá)到同樣的效果。刪除變量在處理多重共線性時(shí)是一種非常重要的方法。如果你僅僅是做預(yù)測(cè),那么多重共線性并不構(gòu)成問(wèn)題,但是如果還要對(duì)每個(gè)預(yù)測(cè)變量進(jìn)行解釋,那么就必須解決這個(gè)問(wèn)題。最常見(jiàn)的方法就是刪除某個(gè)存在多重共線性的變量(某個(gè)變量 vif 2 ? ) 。另外一個(gè)可用的方法便是嶺回歸——多元回歸的變體,專門(mén)用來(lái)處理多重共線性問(wèn)題。

8.5.4 嘗試其他方法

正如剛才提到的,處理多重共線性的一種方法是擬合一種不同類型的模型(本例中是嶺回歸)。其實(shí),如果存在離群點(diǎn)和/或強(qiáng)影響點(diǎn),可以使用穩(wěn)健回歸模型替代OLS回歸。如果違背了正態(tài)性假設(shè),可以使用非參數(shù)回歸模型。如果存在顯著的非線性,能嘗試非線性回歸模型。如果違背了誤差獨(dú)立性假設(shè),還能用那些專門(mén)研究誤差結(jié)構(gòu)的模型,比如時(shí)間序列模型或者多層次回歸模型。最后,你還能轉(zhuǎn)向廣泛應(yīng)用的廣義線性模型,它能適用于許多OLS回歸假設(shè)不成立的情況。在第13章中,我們將會(huì)介紹其中一些方法。至于什么時(shí)候需要提高OLS回歸擬合度,什么時(shí)候需要換一種方法,這些判斷是很復(fù)雜的,需要依靠你對(duì)主題知識(shí)的理解,判斷出哪個(gè)模型提供最佳結(jié)果。既然提到最佳結(jié)果,現(xiàn)在我們就先討論一下回歸模型中的預(yù)測(cè)變量選擇問(wèn)題。
8.6 選擇“最佳”的回歸模型
嘗試獲取一個(gè)回歸方程時(shí),實(shí)際上你就面對(duì)著從眾多可能的模型中做選擇的問(wèn)題。是不是所有的變量都要包括?抑或去掉那個(gè)對(duì)預(yù)測(cè)貢獻(xiàn)不顯著的變量?還是需要添加多項(xiàng)式項(xiàng)和/或交互項(xiàng)來(lái)提高擬合度?最終回歸模型的選擇總是會(huì)涉及預(yù)測(cè)精度(模型盡可能地?cái)M合數(shù)據(jù))與模型簡(jiǎn)潔度(一個(gè)簡(jiǎn)單且能復(fù)制的模型)的調(diào)和問(wèn)題。如果有兩個(gè)幾乎相同預(yù)測(cè)精度的模型,你肯定喜歡簡(jiǎn)單的那個(gè)。本節(jié)討論的問(wèn)題,就是如何在候選模型中進(jìn)行篩選。注意,“最佳”是打了引號(hào)的,因?yàn)闆](méi)有做評(píng)價(jià)的唯一標(biāo)準(zhǔn),最終的決定需要調(diào)查者的評(píng)判。

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }