最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

R語言 用均值替換、回歸插補及多重插補進(jìn)行插補的操作

 更新時間:2021年03月16日 17:36:56   作者:木里先森  
這篇文章主要介紹了R語言 用均值替換、回歸插補及多重插補進(jìn)行插補的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

用均值替換、回歸插補及多重插補進(jìn)行插補

# 設(shè)置工作空間
# 把“數(shù)據(jù)及程序”文件夾拷貝到F盤下,再用setwd設(shè)置工作空間
setwd("E:\\R_workspace\\R語言數(shù)據(jù)分析與挖掘?qū)崙?zhàn)\\chp4")
# 讀取銷售數(shù)據(jù)文件,提取標(biāo)題行
inputfile <- read.csv('./data/catering_sale.csv', header = TRUE) 
View(inputfile)
# 變換變量名
inputfile <- data.frame(sales = inputfile$'銷量', date = inputfile$'日期')
View(inputfile)
# 數(shù)據(jù)截取
inputfile <- inputfile[5:16, ]
View(inputfile)
# 缺失數(shù)據(jù)的識別
is.na(inputfile) # 判斷是否存在缺失
n <- sum(is.na(inputfile)) # 輸出缺失值個數(shù)
n
# 異常值識別
par(mfrow = c(1, 2)) # 將繪圖窗口劃為1行兩列,同時顯示兩圖
dotchart(inputfile$sales) # 繪制單變量散點圖
boxplot(inputfile$sales, horizontal = TRUE) # 繪制水平箱形圖
# 異常數(shù)據(jù)處理
inputfile$sales[5] = NA # 將異常值處理成缺失值
fix(inputfile) # 表格形式呈現(xiàn)數(shù)據(jù)
# 缺失值的處理
inputfile$date <- as.numeric(inputfile$date) # 將日期轉(zhuǎn)換成數(shù)值型變量
sub <- which(is.na(inputfile$sales)) # 識別缺失值所在行數(shù)
sub
# 將數(shù)據(jù)集分成完整數(shù)據(jù)和缺失數(shù)據(jù)兩部分
inputfile1 <- inputfile[-sub, ] 
inputfile2 <- inputfile[sub, ]
# 行刪除法處理缺失,結(jié)果轉(zhuǎn)存
result1 <- inputfile1
View(result1)
# 均值替換法處理缺失,結(jié)果轉(zhuǎn)存
avg_sales <- mean(inputfile1$sales) # 求變量未缺失部分的均值
avg_sales
# 用均值替換缺失
inputfile2$sales <- rep(avg_sales,n) 
# 并入完成插補的數(shù)據(jù)
result2 <- rbind(inputfile1, inputfile2) 
View(result2)
# 回歸插補法處理缺失,結(jié)果轉(zhuǎn)存
# 回歸模型擬合
# 注意:因變量~自變量
model <- lm(sales ~ date, data = inputfile1) 
# 模型預(yù)測
inputfile2$sales <- predict(model, inputfile2) 
result3 <- rbind(inputfile1, inputfile2)
# 多重插補法處理缺失,結(jié)果轉(zhuǎn)存
library(lattice) # 調(diào)入函數(shù)包
library(MASS)
library(nnet)
library(mice) # 前三個包是mice的基礎(chǔ)
# 4重插補,即生成4個無缺失數(shù)據(jù)集
imp <- mice(inputfile, m = 4) 
# 選擇插補模型
# inputfile為原始數(shù)據(jù),有缺失
fit <- with(imp,lm(sales ~ date, data = inputfile)) 
# m重復(fù)完整數(shù)據(jù)分析結(jié)果池
pooled <- pool(fit)
summary(pooled)
result4 <- complete(imp, action = 3) # 選擇第三個插補數(shù)據(jù)集作為結(jié)果

補充:R語言數(shù)據(jù)缺失值處理(隨機(jī)森林,多重插補)

缺失值是指數(shù)據(jù)由于種種因素導(dǎo)致的數(shù)據(jù)不完整,可以分為機(jī)械原因和人為原因。對于缺失值我們通常采用以下幾種方法來進(jìn)行插補。

1.讀取數(shù)據(jù)

通過read.csv函數(shù)導(dǎo)入文檔,也可以用其他函數(shù)讀入,如openxlsx::read.xlsx,read.table等。

head()查看數(shù)據(jù)前幾行。

airquality <- read.csv(data.csv)
head(airquality)

2.檢查數(shù)據(jù)完整性

首先,summary()查看數(shù)據(jù)基本信息

summary(airairquality)

可以看到Ozone中存在缺失值NA

通過調(diào)用VIM::aggr()查看函數(shù)的缺失值(如果包安裝較慢,可選用本地安裝,鏈接已附需自行下載)

#install.packages(‘VIM')
library(VIM)
aggr(airquality)

通過上圖,可以看到Ozone和Solar.R存在缺失值。

3.缺失值填補

3.1簡單處理填補

(1)刪除缺失值

若樣本中存在較少缺失值或缺失值比例較小不影響分析結(jié)果時,可選擇直接將缺失值刪除。

dat1 <- na.omit(airquality)

(2)平均值、中位數(shù)填補

若不能直接將缺失值刪除也可選擇平均值、眾數(shù)、中位數(shù)等進(jìn)行填補

#平均值填補
airquality$ Ozone[is.na(airquality$Ozone)] <- mean(airquality $ Ozone,na.rm=T)
#中位數(shù)填補
airquality$ Solar.R[is.na(airquality$ Solar.R)] <- median(airquality$ Solar.R,na.rm = T)
#計算缺失值個數(shù),等于0 則不存在缺失值
sum(is.na(airquality))
#相鄰均值填補
airquality <- read.csv(data.csv) #重新讀入數(shù)據(jù)
for (i in 1:length(airquality$ Ozone)) {
airquality$ Ozone[i] <- ifelse(is.na(airquality$ Ozone[i]),
mean(c(airquality$ Ozone[i-1],airquality$ Ozone[i+1]),na.rm=T),
airquality$ Ozone[i])
}

3.2復(fù)雜處理填補

(1)K-近鄰算法填補

基本思想:對于需要填補的觀測值,先利用歐氏距離找到其鄰近的K個觀測,再將這K個鄰近的值進(jìn)行加權(quán)平均進(jìn)行填補。

原始數(shù)據(jù)中存在多個缺失值,可以利用DMwR包中的knnImputation()函數(shù)進(jìn)行填補

dat1 <- knnImputation(airquality[,c(1:4)],meth = ‘weighAvg',scale = T)

提取原始數(shù)據(jù)中的前4列進(jìn)行填補,meth = 'weighAvg'指使用加權(quán)平均的方法進(jìn)行填補,scale = T指在選取鄰近值時,先對數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化。

aggr(dat1) #查看缺失值分布

(2)隨機(jī)森林填補缺失值

接下來介紹一個新的填補方法–隨機(jī)森林填補,隨機(jī)森林是機(jī)器學(xué)習(xí)中一種常見的方法,以決策樹為基分類的器的集成學(xué)習(xí)模型。

missForest包中missForest()函數(shù)可實現(xiàn)隨機(jī)森林填補,ntree代表模型中的樹的棵數(shù),一般情況下,對于高維數(shù)據(jù)可選擇較小的值(如100),以達(dá)到快速插補的效果;對于大數(shù)據(jù)集進(jìn)行填補時,可能耗時比較多。

library(missForest)
dat2 <- missForest(airquality,ntree = 100)

dat2中包含填補好的數(shù)據(jù),可利用dat2$ximp查看填補后的值,

head(dat2$ximp)
aggr(dat2$ximp)

同時,OOBerror表示袋外填補缺失的誤差估計。

dat2$OOBerror

4.多重插補法

多重插補法是在一個缺失的數(shù)據(jù)集中生成一個完整的數(shù)據(jù)集,并利用蒙特卡洛的方法進(jìn)行填補的一種重復(fù)模擬的方法。

包mice中的mice()函數(shù)可實現(xiàn)對缺失數(shù)據(jù)的多重插補,原數(shù)據(jù)集中Ozone和Solar.R變量存在缺失,采用‘rf'法插補。

dat3 <- mice(airquality,m=5,method = ‘rf')

其中,m為生成完整數(shù)據(jù)集的個數(shù),默認(rèn)為5. method為插補參數(shù)的方法,‘norm.predict'、‘pmm'、‘rf'、‘norm'依次為回歸預(yù)測法、平均值插補法、隨機(jī)森林法和高斯線性回歸法。

summary(dat3)

通過以下代碼可查看填補的值

dat3$ imp$Solar.R

最后選擇某一列(如1,2,3)填充到缺失數(shù)據(jù)集中即可形成完整的數(shù)據(jù)集.

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • R語言條形圖創(chuàng)建方法

    R語言條形圖創(chuàng)建方法

    在本篇文章里小編給大家整理的是一篇關(guān)于R語言條形圖創(chuàng)建方法,有需要的朋友們可以跟著學(xué)習(xí)參考下。
    2021-04-04
  • R語言3.6.3安裝超詳細(xì)教程附安裝包

    R語言3.6.3安裝超詳細(xì)教程附安裝包

    這篇文章主要介紹了R語言3.6.3安裝教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 數(shù)模技巧不用for循環(huán)且使用ggplot2實現(xiàn)地圖上連線

    數(shù)模技巧不用for循環(huán)且使用ggplot2實現(xiàn)地圖上連線

    這篇文章主要為大家介紹了一個數(shù)模技巧怎樣使用ggplot2不用for循環(huán)來實現(xiàn)地圖上連線,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • R語言-如何按照某一列分組求均值

    R語言-如何按照某一列分組求均值

    這篇文章主要介紹了R語言實現(xiàn)按照某一列分組求均值的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • R語言 小數(shù)點位數(shù)的設(shè)置方式

    R語言 小數(shù)點位數(shù)的設(shè)置方式

    這篇文章主要介紹了R語言 小數(shù)點位數(shù)的設(shè)置方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • R語言多元Logistic邏輯回歸應(yīng)用實例

    R語言多元Logistic邏輯回歸應(yīng)用實例

    這篇文章主要給大家介紹了關(guān)于R語言多元Logistic邏輯回歸應(yīng)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • R語言運算符知識點總結(jié)

    R語言運算符知識點總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于R語言運算符知識點總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-03-03
  • R包clusterProfiler如何安裝成功(新手必看!)

    R包clusterProfiler如何安裝成功(新手必看!)

    最近在我以為ClusterProfiler已經(jīng)安裝好的時候,又遇到了一些問題,所以這篇文章主要給大家介紹了關(guān)于R包clusterProfiler如何安裝成功的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • R語言編程學(xué)習(xí)從Github上安裝包解決網(wǎng)絡(luò)問題

    R語言編程學(xué)習(xí)從Github上安裝包解決網(wǎng)絡(luò)問題

    這篇文章主要為大家介紹了R語言編程從Github上安裝包的過程詳解,這樣可以解決很多網(wǎng)絡(luò)問題,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • R語言繪圖數(shù)據(jù)可視化pie?chart餅圖

    R語言繪圖數(shù)據(jù)可視化pie?chart餅圖

    這篇文章主要介紹了R語言繪圖數(shù)據(jù)可視化pie?chart餅圖,教大家如何用R語言來畫大餅,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02

最新評論

黄梅县| 微博| 炎陵县| 遂宁市| 五莲县| 雷州市| 绥棱县| 永仁县| 宁夏| 荔浦县| 贵阳市| 中江县| 陕西省| 昌黎县| 黑河市| 滨海县| 额济纳旗| 神木县| 六枝特区| 周至县| 呈贡县| 东兴市| 东辽县| 博野县| 荣昌县| 长兴县| 碌曲县| 开阳县| 政和县| 富蕴县| 信丰县| 岗巴县| 青岛市| 合阳县| 南通市| 大埔县| 南平市| 九寨沟县| 四子王旗| 晴隆县| 江孜县|