# 设置工作空间
# 把“数据及程序”文件夹拷贝到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) # 选择第三个插补数据集作为结果