91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • R語言怎么用均值替換、回歸插補及多重插補進行插補的操作

R語言怎么用均值替換、回歸插補及多重插補進行插補的操作

發布時間:2021-03-17 09:21:12 來源:億速云 閱讀:3303 作者:小新 欄目:開發技術

小編給大家分享一下R語言怎么用均值替換、回歸插補及多重插補進行插補的操作,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

用均值替換、回歸插補及多重插補進行插補

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

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

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

1.讀取數據

通過read.csv函數導入文檔,也可以用其他函數讀入,如openxlsx::read.xlsx,read.table等。

head()查看數據前幾行。

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

R語言怎么用均值替換、回歸插補及多重插補進行插補的操作

2.檢查數據完整性

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

summary(airairquality)

R語言怎么用均值替換、回歸插補及多重插補進行插補的操作

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

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

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

R語言怎么用均值替換、回歸插補及多重插補進行插補的操作

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

3.缺失值填補

3.1簡單處理填補

(1)刪除缺失值

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

dat1 <- na.omit(airquality)

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

若不能直接將缺失值刪除也可選擇平均值、眾數、中位數等進行填補

#平均值填補
airquality$ Ozone[is.na(airquality$Ozone)] <- mean(airquality $ Ozone,na.rm=T)
#中位數填補
airquality$ Solar.R[is.na(airquality$ Solar.R)] <- median(airquality$ Solar.R,na.rm = T)
#計算缺失值個數,等于0 則不存在缺失值
sum(is.na(airquality))
#相鄰均值填補
airquality <- read.csv(data.csv) #重新讀入數據
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復雜處理填補

(1)K-近鄰算法填補

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

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

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

提取原始數據中的前4列進行填補,meth = 'weighAvg'指使用加權平均的方法進行填補,scale = T指在選取鄰近值時,先對數據進行標準化。

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

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

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

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

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

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

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

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

dat2$OOBerror

R語言怎么用均值替換、回歸插補及多重插補進行插補的操作

4.多重插補法

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

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

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

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

summary(dat3)

R語言怎么用均值替換、回歸插補及多重插補進行插補的操作

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

dat3$ imp$Solar.R

R語言怎么用均值替換、回歸插補及多重插補進行插補的操作

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

以上是“R語言怎么用均值替換、回歸插補及多重插補進行插補的操作”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

杭州市| 闽侯县| 临湘市| 吴川市| 白朗县| 廊坊市| 横峰县| 虞城县| 旬阳县| 新竹市| 基隆市| 家居| 综艺| 肇庆市| 霍林郭勒市| 凌海市| 容城县| 天祝| 怀安县| 若尔盖县| 石狮市| 陇川县| 新野县| 柏乡县| 邹城市| 五大连池市| 龙泉市| 牡丹江市| 阿坝| 武乡县| 绥宁县| 洱源县| 滨海县| 平利县| 武安市| 兴国县| 峨边| 乌拉特中旗| 壤塘县| 崇明县| 宣汉县|