##設(shè)置工作空間
#把“數(shù)據(jù)及程序” 文件夾復(fù)制到F盤下, 再用setwd設(shè)置工作空間
setwd("F: /數(shù)據(jù)及程序/chapter4/示例程序")
#讀取銷售數(shù)據(jù)文件, 提取標(biāo)題行
inputfile=read.csv('./data/catering_sale.csv', he=T)
#變換變量名
inputfile=data.frame(sales=inputfile$'銷量', date=inputfile$'日期')
#數(shù)據(jù)截取
inputfile=inputfile[5: 16, ]
#缺失數(shù)據(jù)的識(shí)別
is.na(inputfile) #判斷是否存在缺失
n=sum(is.na(inputfile) ) #輸出缺失值個(gè)數(shù)#異常值識(shí)別
par(mfrow=c(1, 2) ) #將繪圖窗口劃為1行兩列, 同時(shí)顯示兩圖
dotchart(inputfile$sales) #繪制單變量散點(diǎn)圖
boxplot(inputfile$sales, horizontal=T) #繪制水平箱形圖
#異常數(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í)別缺失值所在行數(shù)
inputfile1=inputfile[-sub, ] #將數(shù)據(jù)集分成完整數(shù)據(jù)和缺失數(shù)據(jù)兩部分inputfile2=inputfile[sub, ]#行刪除法處理缺失, 結(jié)果轉(zhuǎn)存result1=inputfile1#均值替換法處理缺失, 結(jié)果轉(zhuǎn)存avg_sales=mean(inputfile1$sales) #求變量未缺失部分的均值
inputfile2$sales=rep(avg_sales, n) #用均值替換缺失
result2=rbind(inputfile1, inputfile2) #并入完成插補(bǔ)的數(shù)據(jù)
#回歸插補(bǔ)法處理缺失, 結(jié)果轉(zhuǎn)存
model=lm(sales~date, data=inputfile1) #回歸模型擬合
inputfile2$sales=predict(model, inputfile2) #模型預(yù)測(cè)
result3=rbind(inputfile1, inputfile2)
#多重插補(bǔ)法處理缺失, 結(jié)果轉(zhuǎn)存
library(lattice) #調(diào)入函數(shù)包library(MASS)library(nnet)
library(mice) #前三個(gè)包是mice的基礎(chǔ)
imp=mice(inputfile, m=4) #4重插補(bǔ), 即生成4個(gè)無(wú)缺失數(shù)據(jù)集
fit=with(imp, lm(sales~date, data=inputfile) ) #選擇插補(bǔ)模型
pooled=pool(fit)
summary(pooled)
result4=complete(imp, action=3) #選擇第三個(gè)插補(bǔ)數(shù)據(jù)集作為結(jié)果








暫無(wú)數(shù)據(jù)