導航:首頁 > 數據處理 > 數據有缺失如何用r語言做sem

數據有缺失如何用r語言做sem

發布時間:2023-02-21 20:26:05

㈠ r語言將變數中的缺失值賦值怎麼寫

1、定義一個變數m,並使用函數c()進行對變數m賦值,使用的是「->」,如下圖所示。

㈡ R語言缺失值處理

2016-08-23 05:17 砍柴問樵夫

數據缺失有多種原因,而大部分統計方法都假定處理的是完整矩陣、向量和數據框。

缺失數據的分類:

完全隨機缺失 :若某變數的缺失數據與其他任何觀測或未觀測變數都不相關,則數據為完全隨機缺失(MCAR)。

隨機缺失: 若某變數上的缺失數據與其他觀測變數相關,與它自己的未觀測值不相關,則數據為隨機缺失(MAR)。

非隨機缺失: 若缺失數據不屬於MCAR或MAR,則數據為非隨機缺失(NMAR) 。

處理缺失數據的方法有很多,但哪種最適合你,需要在實踐中檢驗。

下面一副圖形展示處理缺失數據的方法:

處理數據缺失的一般步驟:

1、識別缺失數據

2、檢測導致數據缺失的原因

3、刪除包含缺失值的實例或用合理的數值代替(插補)缺失值。

1、識別缺失數據:

R語言中, NA 代表缺失值, NaN 代表不可能值, Inf 和 -Inf 代表正無窮和負無窮。

在這里,推薦使用 is.na , is.nan , is.finite , is.infinite 4個函數去處理。

x<-c(2,NA,0/0,5/0)

#判斷缺失值

is.na(x)

#判斷不可能值

is.nan(x)

#判斷無窮值

is.infinite(x)

#判斷正常值

is.finite(x)

推薦一個函數: complete.case() 可用來識別矩陣或數據框中沒有缺失值的行!

展示出數據中缺失的行 (數據集sleep來自包VIM)

sleep[!complete.cases(sleep),]

判斷數據集中有多少缺失

針對復雜的數據集,怎麼更好的探索數據缺失情況呢?

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

備註:0表示變數的列中沒有缺失,1則表示有缺失值。

第一行給出了沒有缺失值的數目(共多少行)。

第一列表示各缺失值的模式。

最後一行給出了每個變數的缺失值數目。

最後一列給出了變數的數目(這些變數存在缺失值)。

在這個數據集中,總共有38個數據缺失。

圖形化展示缺失數據:

aggr(sleep,prop=F,numbers=T)

matrixplot(sleep)

淺色表示值小,深色表示值大,默認缺失值為紅色。

marginmatrix(sleep)

上述變數太多,我們可以選出部分變數展示:

x <- sleep[, 1:5]

x[,c(1,2,4)] <- log10(x[,c(1,2,4)])

marginmatrix(x)

為了更清晰,可以進行成對展示:

marginplot(sleep[c("Gest","Dream")])

在這里(左下角)可以看到,Dream和Gest分別缺失12和4個數據。

左邊的紅色箱線圖展示的是在Gest值缺失的情況下Dream的分布,而藍色箱線圖展示的Gest值不缺失的情況下Dream的分布。同樣的,Gest箱線圖在底部。

2、缺失值數據的處理

行刪除法: 數據集中含有缺失值的行都會被刪除,一般假定缺失數據是完全隨機產生的,並且缺失值只是很少一部分,對結果不會造成大的影響。

即:要有足夠的樣本量,並且刪除缺失值後不會有大的偏差!

行刪除的函數有 na.omit() 和 complete.case()

newdata<-na.omit(sleep)

sum(is.na(newdata))

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

sum(is.na(newdata))

均值/中位數等填充: 這種方法簡單粗暴,如果填充值對結果影響不怎麼大,這種方法倒是可以接受,並且有可能會產生令人滿意的結果。

方法1:

newdata<-sleep

mean(newdata$Dream,na.rm = T)

newdata[is.na(newdata$Dream),"Dream"]<-1.972

方法2:

Hmisc包更加簡單,可以插補均值、中位數等,你也可以插補指定值。

library(Hmisc)

impute(newdata$Dream,mean)

impute(newdata$Dream,median)

impute(newdata$Dream,2)

mice包插補缺失數據: 鏈式方程多元插值,首先利用mice函數建模再用complete函數生成完整數據。

下圖展示mice包的操作過程:

mice():從一個含缺失值的數據框開始,返回一個包含多個完整數據集對象(默認可以模擬參數5個完整的數據集)

with():可依次對每個完整數據集應用統計建模

pool():將with()生成的單獨結果整合到一起

library(mice)

newdata<-sleep

data<-mice(newdata,m = 5,method='pmm',maxit=100,seed=1)

在這里,m是默認值5,指插補數據集的數量

插補方法是pmm:預測均值匹配,可以用methods(mice)查看其他方法

maxit指迭代次數,seed指設定種子數(和set.seed同義)

概述插補後的數據:

summary(data)

在這上面可以看到數據集中變數的觀測值缺失情況,每個變數的插補方法, VisitSequence 從左至右展示了插補的變數, 預測變數矩陣 (PredictorMatrix)展示了進行插補過程的含有缺失數據的變數,它們利用了數據集中其他變數的信息。(在矩陣中,行代表插補變數,列代表為插補提供信息的變數,1

和0分別表示使用和未使用。)

查看整體插補的數據:

data$imp

查看具體變數的插補數據:

data$imp$Dream

最後,最重要的是生成一個完整的數據集

completedata<-complete(data)

判斷還有沒有缺失值,如果沒有,結果返回FLASE

anyNA(completedata)

針對以上插補結果,我們可以查看原始數據和插補後的數據的分布情況

library(lattice)

xyplot(data,Dream~NonD+Sleep+Span+Gest,pch=21)

圖上,插補值是洋紅點呈現出的形狀,觀測值是藍色點。

densityplot(data)

圖上,洋紅線是每個插補數據集的數據密度曲線,藍色是觀測值數據的密度曲線。

stripplot(data, pch = 21)

上圖中,0代表原始數據,1-5代表5次插補的數據,洋紅色的點代表插補值。

下面我們分析對數據擬合一個線性模型:

完整數據:

library(mice)

newdata<-sleep

data<-mice(newdata,m = 5,method='pmm',maxit=100,seed=1)

model<-with(data,lm(Dream~Span+Gest))

pooled<-pool(model)

summary(pooled)

fim指的是各個變數缺失信息的比例,lambda指的是每個變數對缺失數據的貢獻大小

缺失數據(在運行中,自動會行刪除):

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

summary(lm.fit)

完整數據集和缺失數據集進行線性回歸後,參數估計和P值基本一直。 缺失值是完全隨機產生的 。如果缺失比重比較大的話,就不適合使用行刪除法,建議使用多重插補法。

kNN插值法: knnImputation函數使用k近鄰方法來填充缺失值。對於需要插值的記錄,基於歐氏距離計算k個和它最近的觀測。接著將這k個近鄰的數據利用距離逆加權算出填充值,最後用該值替代缺失值。

library(DMwR)

newdata<-sleep

knnOutput <- knnImputation(newdata)

anyNA(knnOutput)

head(knnOutput)

㈢ 怎麼學慣用 R 語言進行數據挖掘

什麼是R語言?應該如何開始學習/使用R語言呢?

學習R有幾個月了,總算是摸著了一點門道。
寫一些自己的心得和經驗,方便自己進一步鼓搗R。如果有人看到我寫的東西而得到了幫助,那就更好了。
什麼是R?R的優點何在?
R是一個數據分析軟體。簡單點說,R可以看做MATLAB的「替代品」,而且具有免費開源的優勢。R可以像MATLAB一樣解決有關數值計算的問題,而且具有強大的數據處理,繪圖功能。
R擁有大量的統計分析工具包,我的感覺是——只有我們沒聽說過的工具,絕對沒有R沒有的工具包。配合著各種各樣的工具包,你可以毀滅任何關於數據和統計的問題。因為數據包的數量龐大,所以查找自己需要的數據包,可能很煩惱。
如果有以下技能,學R會很方便:
1.已經了解些高級程序語言(非常重要)
2.英語不壞
3.概率統計理論基礎
4.看數據不頭疼
5.看cmd or terminal 也不頭疼
你需要一本適合你的R語言教材
我開始學習R的時候,找到了這個帖子

非常強大的關於R語言教材綜述。我非常感謝原帖作者。你可以參考這個帖子選一本適合你的教材。
我這里在說一下我主要使用的幾本教材的心得:
1. 統計建模與R軟體(薛毅著):非常優秀的R語言入門教材,涵蓋了所有R的基礎應用&方法,示例代碼也很優秀。作為一本中文的程序語言教材,絕對是最優秀的之一。但是要看懂這本書,還是需要「已經了解些高級程序語言」。PS:我親愛的吉林大學圖書館,有兩本該教材流通,我常年霸佔一本。
2. R in Nutshell:從講解內容上看,與上一本差別不大,在R語言的應用上都是比較初級的入門,但是有些R軟體&語言上的特性,寫得比薛毅老師的教材深刻。這本書最大的優點就是工具書,方便開始入門時候,對有些「模稜兩可」的東西的查詢。PS:我將這本書列印了出來,簡單的從頭到尾翻過,最大的用途就是像一本字典一樣查詢。
3. ggplot2 Elegant Graphics for Data:這是一本介紹如何使用ggplot2包,進行繪圖的書。ggplot2包,非常強大的繪圖工具,幾乎可以操作任何圖中的元素,而且是提供添加圖層的方式讓我們可以一步步的作圖。提到ggplot2包,應該提到一個詞——「潛力無窮」,每一個介紹
ggplot2的人,都會用這個形容詞。這本書最大的作用也是當做一本繪圖相關的工具書,書中講解詳細,細致,每個小參數的變動都會配圖幫你理解。PS:這本書我也列印出來了,非常適合查詢。
幾個可以逐步提高R能力的網站
1.R-bloggers: 這里有關於R和數據的一切討論,前沿的問題,基礎的問題,應有盡有。可以說這些傢伙們讓R變得越來越強大。我RSS了這個網站,每天都看一下有什麼我感興趣的方法和話題,慢慢的積累一些知識,是一個很有意思的過程。
2.統計之都: 這是一個有大量R使用者交流的論壇,你可以上去提問題,總有好心人來幫助你的。
3.R客: 是關於R的一個博客,更新不快,偏重國內R的一些發展。
R的使用環境
如果你看見terminal or cmd就打怵的話,一定要使用Rstudio。Rstudio的優點是,集成了Rconsole、腳本編輯器、可視化的數據查詢、歷史命令、幫助查詢等,還有的完美的腳本和console的互動。畢竟是可視化的界面,有許多按鈕可以用。R 的腳本編輯器很蛋疼,就比記事本多了個顏色高亮吧,不適合編寫腳本,但適合調試腳本。
最後,說一下,剛開始學習R或者其他什麼語言,都有一個通病,就是一些小細節的不知道,或者是記得不清楚,往往一個蛋疼的bug就可以耗掉大量的時間,這是一個讓人想砸電腦的過程。我往後,會在博客里記錄一些讓我蛋很疼的小細節。本文分為6個部分,分別介紹初級入門,高級入門,繪圖與可視化,計量經濟學,時間序列分析,金融等。
1.初級入門
《An Introction to R》,這是官方的入門小冊子。其有中文版,由丁國徽翻譯,譯名為《R導論》。《R4Beginners》,這本小冊子有中文版應該叫《R入門》。除此之外,還可以去讀劉思喆的《153分鍾學會R》。這本書收集了R初學者提問頻率最高的153個問題。為什麼叫153分鍾呢?因為最初作者寫了153個問題,閱讀一個問題花費1分鍾時間,全局下來也就是153分鍾了。有了這些基礎之後,要去讀一些經典書籍比較全面的入門書籍,比如《統計建模與R軟體》,國外還有《R Cookbook》和《R in action》,本人沒有看過,因此不便評論。
最後推薦,《R in a Nutshell》。對,「果殼裡面的R」!當然,是開玩笑的,in a Nutshell是俚語,意思大致是「簡單的說」。目前,我們正在翻譯這本書的中文版,大概明年三月份交稿!這本書很不錯,大家可以從現在開始期待,並廣而告知一下!
2.高級入門
讀了上述書籍之後,你就可以去高級入門階段了。這時候要讀的書有兩本很經典的。《Statistics with R》和《The R book》。之所以說這兩本書高級,是因為這兩本書已經不再限於R基礎了,而是結合了數據分析的各種常見方法來寫就的,比較系統的介紹了R在線性回歸、方差分析、多元統計、R繪圖、時間序列分析、數據挖掘等各方面的內容,看完之後你會發現,哇,原來R能做的事情這么多,而且做起來是那麼簡潔。讀到這里已經差不多了,剩下的估計就是你要專門攻讀的某個方面內容了。下面大致說一說。
3.繪圖與可視化
亞里斯多德說,「較其他感覺而言,人類更喜歡觀看」。因此,繪圖和可視化得到很多人的關注和重視。那麼,如何學習R畫圖和數據可視化呢?再簡單些,如何畫直方圖?如何往直方圖上添加密度曲線呢?我想讀完下面這幾本書你就大致會明白了。
首先,畫圖入門可以讀《R Graphics》,個人認為這本是比較經典的,全面介紹了R中繪圖系統。該書對應的有一個網站,google之就可以了。更深入的可以讀《Lattice:Multivariate Data Visualization with R》。上面這些都是比較普通的。當然,有比較文藝和優雅的——ggplot2系統,看《ggplot2:Elegant Graphics for Data Analysis》。還有數據挖掘方面的書:《Data Mining with Rattle and R》,主要是用Rattle軟體,個人比較喜歡Rattle!當然,Rattle不是最好的,Rweka也很棒!再有就是交互圖形的書了,著名的交互系統是ggobi,這個我已經喜歡兩年多了,關於ggobi的書有《Interactive and Dynamic Graphics for Data Analysis With R and GGobi》,不過,也只是適宜入門,更多更全面的還是去ggobi的主頁吧,上面有各種資料以及包的更新信息!
特別推薦一下,中文版繪圖書籍有《現代統計圖形》。
4.計量經濟學
關於計量經濟學,首先推薦一本很薄的小冊子:《Econometrics In R》,做入門用。然後,是《Applied Econometrics with R》,該書對應的R包是AER,可以安裝之後配合使用,效果甚佳。計量經濟學中很大一部分是關於時間序列分析的,這一塊內容在下面的地方說。
5.時間序列分析
時間序列書籍的書籍分兩類,一種是比較普適的書籍,典型的代表是:《Time Series Analysis and Its Applications :with R examples》。該書介紹了各種時間序列分析的經典方法及實現各種經典方法的R代碼,該書有中文版。如果不想買的話,建議去作者主頁直接下載,英文版其實讀起來很簡單。時間序列分析中有一大塊兒是關於金融時間序列分析的。這方面比較流行的書有兩本《Analysis of financial time series》,這本書的最初是用的S-plus代碼,不過新版已經以R代碼為主了。這本書適合有時間序列分析基礎和金融基礎的人來看,因為書中關於時間序列分析的理論以及各種金融知識講解的不是特別清楚,將極值理論計算VaR的部分就比較難看懂。另外一個比較有意思的是Rmetrics推出的《TimeSeriesFAQ》,這本書是金融時間序列入門的東西,講的很基礎,但是很難懂。對應的中文版有《金融時間序列分析常見問題集》,當然,目前還沒有發出來。經濟領域的時間序列有一種特殊的情況叫協整,很多人很關注這方面的理論,關心這個的可以看《Analysis of Integrated and Cointegrated Time Series with R》。最後,比較高級的一本書是關於小波分析的,看《Wavelet Methods in Statistics with R》。附加一點,關於時間序列聚類的書籍目前比較少見,是一個處女地,有志之士可以開墾之!
6.金融
金融的領域很廣泛,如果是大金融的話,保險也要被納入此間。用R做金融更多地需要掌握的是金融知識,只會數據分析技術意義寥寥。我覺得這些書對於懂金融、不同數據分析技術的人比較有用,只懂數據分析技術而不動金融知識的人看起來肯定如霧里看花,甚至有人會覺得金融分析比較低級。這方面比較經典的書籍有:《Advanced Topics in Analysis of Economic and Financial Data Using R》以及《Modelling Financial Time Series With S-plus》。金融產品定價之類的常常要用到隨機微分方程,有一本叫《Simulation Inference Stochastic Differential Equations:with R examples》的書是關於這方面的內容的,有實例,內容還算詳實!此外,是風險度量與管理類。比較經典的有《Simulation Techniques in Financial Risk Management》、《Modern Actuarial Risk Theory Using R》和《Quantitative Risk Management:Concepts, Techniques and Tools》。投資組合分析類和期權定價類可以分別看《Portfolio Optimization with R》和《Option Pricing and Estimation of Financial Models with R》。
7.數據挖掘
這方面的書不多,只有《Data Mining with R:learing with case studies》。不過,R中數據挖掘方面的包已經足夠多了,參考包中的幫助文檔就足夠了。

閱讀全文

與數據有缺失如何用r語言做sem相關的資料

熱點內容
沒有點技術怎麼吃肉 瀏覽:516
三菱數據運算為什麼突然出現亂碼 瀏覽:45
掙錢的汾酒代理費用多少 瀏覽:881
交易費用在借方代表什麼意思 瀏覽:193
發送信息顯示通知信息是什麼意思 瀏覽:621
如何下單套利交易 瀏覽:84
微信添加信息怎麼恢復 瀏覽:529
交易貓不付錢怎麼聯系賣家 瀏覽:188
哈登為什麼叫停交易 瀏覽:289
在數據結構中圖形結構又稱為什麼 瀏覽:998
為了防止什麼數據丟失 瀏覽:570
產品上的信息怎麼看 瀏覽:205
統計表記錄數據有什麼好處 瀏覽:610
做紅酒代理利潤一般是多少 瀏覽:382
微店如何發貨代理 瀏覽:505
高瓴什麼時候買的匯川技術 瀏覽:641
什麼是數據獨立性分哪些層次 瀏覽:230
亞馬遜產品單個包裝怎麼多個賣 瀏覽:619
證券賬號多久沒有交易會休眠 瀏覽:663
客服跟代理有什麼區別 瀏覽:116