資料預處理通常佔了整個分析的70-80%的時間,我沒有認真的按部就班處理完資料,就先進行分析,所以有些誤差或是檢定沒通過也是合理的。尤其對於遺失值我先前沒有好好處理,在處理上有兩種想法。
刪資料:
一種就是只留完整資料,只要一整行資料當中有任何遺失值,我們就直接捨棄掉。任何型態的資料,數值、尺度、類別都適用。
#-------------遺失值處理方法1_全部刪掉-----#
xx = xx[complete.cases(xx), ] #刪掉不完整的行
table(is.na(xx)) #看資料內是否還有NA值
填資料:
填資料的方法就千千百百種了,透過各種統計方法填補資料儼然變成了一個學問
最簡單的想法就是用平均值代替,簡單歸簡單,卻不失為一個好辦法,很難說這方法是錯的,這方法只有數值型變數合適。
#-------------遺失值處理方法2_用平均值補-----#
for(i in 1:length(xx))
xx[is.na(xx[,i]), i] <- mean(xx[,i], na.rm=T)#用平均值代替
table(is.na(xx)) #看資料內是否還有NA值
#-------------遺失值處理方法2_用平均值補(其實公用一樣,但不知道哪個會比較快)-----#
library(Hmisc)
impute(xx$每天空車時數, mean) # replace with mean
再來就就比較複雜了,用統計的方法去預測應該為和數值,最常出現的例子就是隨機森林、回歸補差法、跟EM了。
EM插補法是利用最大概似法將遺漏資料模型化,透過E階段與M階段,再找出最精確與最合理的估計值。
這幾個補值的方法的確都讓我耳目一新,之後會好好介紹,但是這幾個補差值的方法在我的資料當中都有個小小問題,跟SEM結構方程模型模型、PCA主成分分析一樣,就是它們是針對數值型變數,摁...我的資料類別變數居多,看樣子還是默默用第一個方法,刪掉好了。之後還會補如何判斷哪種補遺失值的方法比較好的方法。
參考資料:https://kknews.cc/zh-tw/tech/e2v4z.html
https://hk.saowen.com/a/b6903b19fd010c8ae4b1f035ba91bbc40f777a66da7ec86c27f4b7c81e713a1d
https://hk.saowen.com/a/518daa6190c27ab4f6691fc41601fdae05936be26a5d8d5de97cef7534cbd698