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

熱線電話:13121318867

登錄
首頁精彩閱讀R語言處理缺失數(shù)據(jù)的高級方法
R語言處理缺失數(shù)據(jù)的高級方法
2016-05-28
收藏

R語言處理缺失數(shù)據(jù)的高級方法

主要用到VIM和mice包

install.packages(c("VIM","mice"))

1.處理缺失值的步驟

步驟:

(1)識別缺失數(shù)據(jù);

(2)檢查導(dǎo)致數(shù)據(jù)缺失的原因;

(3)刪除包含缺失值的實(shí)例或用合理的數(shù)值代替(插補(bǔ))缺失值

缺失值數(shù)據(jù)的分類:

(1)完全隨機(jī)缺失:若某變量的缺失數(shù)據(jù)與其他任何觀測或未觀測變量都不相關(guān),則數(shù)據(jù)為完全隨機(jī)缺失(MCAR)。

(2)隨機(jī)缺失:若某變量上的缺失數(shù)據(jù)與其他觀測變量相關(guān),與它自己的未觀測值不相關(guān),則數(shù)據(jù)為隨機(jī)缺失(MAR)。

(3)非隨機(jī)缺失:若缺失數(shù)據(jù)不屬于MCAR或MAR,則數(shù)據(jù)為非隨機(jī)缺失(NIMAR)。

2.識別缺失值

NA:代表缺失值;

NaN:代表不可能的值;

Inf:代表正無窮;

-Inf:代表負(fù)無窮。

is.na():識別缺失值;

is.nan():識別不可能值;

is.infinite():無窮值。

is.na()、is.nan()和is.infinte()函數(shù)的返回值示例

xis.na(x)is.nan(x)is.infinite(x)

x<-NATRUEFALSEFALSE

x<-0/0TRUETRUEFALSE

x<-1/0FALSEFALSETRUE

complete.cases()可用來識別矩陣或數(shù)據(jù)框中沒有缺失值的行,若每行都包含完整的實(shí)例,則返回TRUE的邏輯向量,若每行有一個(gè)或多個(gè)缺失值,則返回FALSE;

3.探索缺失值模式

(1)列表顯示缺失值

mice包中的md.pattern()函數(shù)可以生成一個(gè)以矩陣或數(shù)據(jù)框形式展示缺失值模式的表格

library(mice)

data(sleep,package="VIM")

md.pattern(sleep)


(2)圖形探究缺失數(shù)據(jù)

VIM包中提供大量能可視化數(shù)據(jù)集中缺失值模式的函數(shù):aggr()、matrixplot()、scattMiss()

library("VIM")

aggr(sleep,prop=FALSE,numbers=TRUE)


library("VIM")

aggr(sleep,prop=TRUE,numbers=TRUE)#用比例代替了計(jì)數(shù)

matrixplot()函數(shù)可生成展示每個(gè)實(shí)例數(shù)據(jù)的圖形

matrixplot(sleep)

淺色表示值小,深色表示值大;默認(rèn)缺失值為紅色。

marginplot()函數(shù)可生成一幅散點(diǎn)圖,在圖形邊界展示兩個(gè)變量的缺失值信息。

library("VIM")

marginplot(sleep[c("Gest","Dream")],pch=c(20),col=c("darkgray","red","blue"))

(3)用相關(guān)性探索缺失值

影子矩陣:指示變量替代數(shù)據(jù)集中的數(shù)據(jù)(1表示缺失,0表示存在),這樣生成的矩陣有時(shí)稱作影子矩陣。

求這些指示變量間和它們與初始(可觀測)變量間的相關(guān)性,有且于觀察哪些變量常一起缺失,以及分析變量“缺失”與其他變量間的關(guān)系。

head(sleep)

str(sleep)

x<-as.data.frame(abs(is.na(sleep)))

head(sleep,n=5)

head(x,n=5)

y<-x[which(sd(x)>0)]

cor(y)

cor(sleep,y,use="pairwise.complete.obs")

4.理解缺失值數(shù)據(jù)的來由和影響

識別缺失數(shù)據(jù)的數(shù)目、分布和模式有兩個(gè)目的:

(1)分析生成缺失數(shù)據(jù)的潛在機(jī)制;

(2)評價(jià)缺失數(shù)據(jù)對回答實(shí)質(zhì)性問題的影響。

即:

(1)缺失數(shù)據(jù)的比例有多大?

(2)缺失數(shù)據(jù)是否集中在少數(shù)幾個(gè)變量上,抑或廣泛存在?

(3)缺失是隨機(jī)產(chǎn)生的嗎?

(4)缺失數(shù)據(jù)間的相關(guān)性或與可觀測數(shù)據(jù)間的相關(guān)性,是否可以表明產(chǎn)生缺失值的機(jī)制呢?

若缺失數(shù)據(jù)集中在幾個(gè)相對不太重要的變量上,則可以刪除這些變量,然后再進(jìn)行正常的數(shù)據(jù)分析;

若有一小部分?jǐn)?shù)據(jù)隨機(jī)分布在整個(gè)數(shù)據(jù)集中(MCAR),則可以分析數(shù)據(jù)完整的實(shí)例,這樣仍可得到可靠有效的結(jié)果;

若以假定數(shù)據(jù)是MCAR或MAR,則可以應(yīng)用多重插補(bǔ)法來獲得有鏟的結(jié)論。

若數(shù)據(jù)是NMAR,則需要借助專門的方法,收集新數(shù)據(jù),或加入一個(gè)相對更容易、更有收益的行業(yè)。

5.理性處理不完整數(shù)據(jù)

6.完整實(shí)例分析(行刪除)

函數(shù)complete.cases()、na.omit()可用來存儲(chǔ)沒有缺失值的數(shù)據(jù)框或矩陣形式的實(shí)例(行):

newdata<-mydata[complete.cases(mydata),]

newdata<-na.omit(mydata)

options(digits=1)

cor(na.omit(sleep))

cor(sleep,use="complete.obs")

fit<-lm(Dream~Span+Gest,data=na.omit(sleep))

summary(fit)

7.多重插補(bǔ)

多重插補(bǔ)(MI)是一種基于重復(fù)模擬的處理缺失值的方法。

MI從一個(gè)包含缺失值的數(shù)據(jù)集中生成一組完整的數(shù)據(jù)集。每個(gè)模擬數(shù)據(jù)集中,缺失數(shù)據(jù)將使用蒙特卡洛方法來填補(bǔ)。

此時(shí),標(biāo)準(zhǔn)的統(tǒng)計(jì)方法便可應(yīng)用到每個(gè)模擬的數(shù)據(jù)集上,通過組合輸出結(jié)果給出估計(jì)的結(jié)果,以及引入缺失值時(shí)的置信敬意。

可用到的包Amelia、mice和mi包

mice()函數(shù)首先從一個(gè)包含缺失數(shù)據(jù)的數(shù)據(jù)框開始,然后返回一個(gè)包含多個(gè)完整數(shù)據(jù)集的對象。每個(gè)完整數(shù)據(jù)集都是通過對原始數(shù)據(jù)框中的缺失數(shù)據(jù)進(jìn)行插而生成的。

with()函數(shù)可依次對每個(gè)完整數(shù)據(jù)集應(yīng)用統(tǒng)計(jì)模型

pool()函數(shù)將這些單獨(dú)的分析結(jié)果整合為一組結(jié)果。

最終模型的標(biāo)準(zhǔn)誤和p值都將準(zhǔn)確地反映出由于缺失值和多重插補(bǔ)而產(chǎn)生的不確定性。

基于mice包的分析通常符合以下分析過程:

library(mice)

imp<-mice(mydata,m)

fit<-with(imp,analysis)

pooled<-pool(fit)

summary(pooled)

mydata是一個(gè)飲食缺失值的矩陣或數(shù)據(jù)框;imp是一個(gè)包含m個(gè)插補(bǔ)數(shù)據(jù)集的列表對象,同時(shí)還含有完成插補(bǔ)過程的信息,默認(rèn)的m=5analysis是一個(gè)表達(dá)式對象,用來設(shè)定應(yīng)用于m個(gè)插補(bǔ)的統(tǒng)計(jì)分析方法。方法包括做線回歸模型的lm()函數(shù)、做廣義線性模型的glm()函數(shù)、做廣義可加模型的gam()、及做負(fù)二項(xiàng)模型的nbrm()函數(shù)。fit是一個(gè)包含m個(gè)單獨(dú)統(tǒng)計(jì)分析結(jié)果的列表對象;pooled是一個(gè)包含這m個(gè)統(tǒng)計(jì)分析平均結(jié)果的列表對象。</pre><pre name="code" class="plain">library(mice)

data(sleep,package="VIM")

imp<-mice(sleep,seed=1234)

fit<-with(imp,lm(Dream~Span+Gest))

pooled<-pool(fit)

summary(pooled)

impimp$imp$Dream

利用complete()函數(shù)可觀察m個(gè)插補(bǔ)數(shù)據(jù)集中的任意一個(gè),格式為:complete(imp,action=#)

eg:

dataset3<-complete(imp,action=3)

dataset3

8.處理缺失值的其他方法

(1)成對刪除

處理含缺失值的數(shù)據(jù)集時(shí),成對刪除常作為行刪除的備選方法使用。對于成對刪除,觀測只是當(dāng)它含缺失數(shù)據(jù)的變量涉及某個(gè)特定分析時(shí)才會(huì)被刪除。

cor(sleep,use="pairwise.complete.obs")

雖然成對刪除似乎利用了所有可用數(shù)據(jù),但實(shí)際上每次計(jì)算只用了不同的數(shù)據(jù)集,這將會(huì)導(dǎo)致一些扭曲,故建議不要使用該方法。

(2)簡單(非隨機(jī))插補(bǔ)

簡單插補(bǔ),即用某個(gè)值(如均值、中位數(shù)或眾數(shù))來替換變量中的缺失值。注意,替換是非隨機(jī)的,這意味著不會(huì)引入隨機(jī)誤差(與多重襯托不同)。

簡單插補(bǔ)的一個(gè)優(yōu)點(diǎn)是,解決“缺失值問題”時(shí)不會(huì)減少分析過程中可用的樣本量。雖然 簡單插補(bǔ)用法簡單,但對于非MCAR的數(shù)據(jù)會(huì)產(chǎn)生有偏的結(jié)果。若缺失數(shù)據(jù)的數(shù)目非常大,那么簡單插補(bǔ)很可能會(huì)低估標(biāo)準(zhǔn)差、曲解變量間的相關(guān)性,并會(huì)生成不正確的統(tǒng)計(jì)檢驗(yàn)的p值。應(yīng)盡量避免使用該方法。

9.R語言中制作出版級品質(zhì)的輸出

常用方法:Sweave和odfWeave。

Sweave包可將R代碼及輸出嵌入到LaTeX文檔中,從而得到 PDF、PostScript和DVI格式的高質(zhì)量排版報(bào)告。

odfWeave包可將R代碼及輸出嵌入到ODF(Open Documents Format)的文檔中。


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

若不方便掃碼,搜微信號: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)證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測極驗(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ù)說明請參見: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 = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+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); }