看书标记【R语言数据分析与挖掘实战】11

该文通过时间序列分析方法处理历史磁盘数据,预测服务器磁盘使用空间,并设定不同预警等级。使用ADF单位根检验和Box.test检验确保数据平稳性和白噪声。通过ARIMA模型选择与残差检验优化模型,预测未来5天磁盘容量,以1.5的误差阈值评估模型可行性。
摘要由CSDN通过智能技术生成

第十一章 应用系统负载分析与磁盘容量预测

11.1背景与挖掘目标

避免应用系统出现存储容量耗尽的情况,从而导致应用系统负债率过高,最终引发系统故障。
需要实现的目标是:
(1)针对历史磁盘数据,采用时间序列分析方法,预测应用系统服务器磁盘已使用空间大小。
(2)根据用户需求设置不同的预警等级,将预测值与容量值进行比较,对其结果进行预警判断,为系统管理员提供定制化的预警提示。

11.2 分析方法与过程

数据抽取,抽取46天的数据,画出时序图可以初步判断磁盘使用情况不具备周期性且为非平稳时间序列数据集。针对原始数据集的分类问题,将代表磁盘信息的三个属性值进行合并交叉,构建具有唯一标识的新属性。

setwd("F:/数据及程序/chapter11/示例程序")
Data <- read.csv("./data/discdata.csv", header = TRUE, encoding = 'utf-8')
# 删除重复项
index1 <- which(Data$VALUE == 52323324)
index2 <- which(Data$VALU == 157283328)
index <- sort(c(index1, index2))
Data <- Data[-index, ]
# 数据变换
x <- matrix(Data$VALUE, nrow = 47, ncol = 2, byrow = T)
index3 <- duplicated(Data$COLLECTTIME)
y <- Data[!index3, ]$COLLECTTIME
Data <- data.frame(Data[1:47, 1], x, y)
colnames(Data) <- c("SYS_NAME", "CWX-C", "CWX-D", "COLLECTTIME")
# 保存数据
write.csv(Data, "./tmp/chuliData.csv", row.names = T)

预测模型建模图
平稳性检验用时序图观察法或者ADF单位根检验,防止出现“伪回归”现象。

setwd("F:/数据及程序/chapter11/示例程序")
# install.packages("fUnitRoots")
library(fUnitRoots)
Data <- read.csv("./data/discdata_processed.csv", header = TRUE)
colnames(Data) <- c("SYS_NAME", "COLLECTTIME", "CWC", "CWD")
attach(Data)
# 单位根检验
adfTest(CWD)
# 一阶差分单位根检验
adfTest(diff(CWD))

白噪声检验为了验证选取模型后序列中的信息是否提取完毕,剩下的信息是否为随机扰动项,无法进行预测和使用。使用的是LB统计量。

setwd("F:/数据及程序/chapter11/示例程序")
Data <- read.csv("./data/discdata_processed.csv", header = TRUE)
colnames(Data) <- c("SYS_NAME", "COLLECTTIME", "CWC", "CWD")
attach(Data)
# 白噪声检验
Box.test(CWD, type = "Ljung-Box")

模型识别,采用极大似然比方法进行模型的参数估计,估计各个参数值,采用BIC信息准则对模型进行定阶确定p、q。

setwd("F:/数据及程序/chapter11/示例程序")
library(TSA)
library(forecast)
Data <- read.csv("./data/discdata_processed.csv", header = TRUE)
colnames(Data) <- c("SYS_NAME", "COLLECTTIME", "CWC", "CWD")
attach(Data)
# BIC图
res <- armasubsets(y = CWD, nar = 5, nma = 5, y.name = 'test',
                   ar.method = 'ols')
plot(res)
# 选择拥有最小bic值得p、q值
auto.arima(CWD, ic = "bic")

模型检验,检验模型的残差序列是否为白噪声,如果不是,则还需要对模型进行修改提取模型信息。(不是有个自动定阶的arima模型吗?)

setwd("F:/数据及程序/chapter11/示例程序")
library(forecast)
Data <- read.csv("./data/discdata_processed.csv", header = TRUE)
colnames(Data) <- c("SYS_NAME", "COLLECTTIME", "CWC", "CWD")
attach(Data)
m1 <- arima(CWD, order = c(0, 1, 1))
r1 <- m1$residuals 
# 对残差进行平稳性检验
adfTest(r1)
# 对残差进行随机性检验
Box.test(r1, type = "Ljung-Box") 
m2 <- arima(CWD, order = c(0, 1, 2))
r2 <- m1$residuals
# 对残差进行平稳性检验
adfTest(r2)
# 对残差进行纯随机性检验
Box.test(r2, type = "Ljung-Box")

模型预测预测未来5天的预测值,与真实值比较。根据实际业务分析确定误差阈值为1.5,预测的误差均小于阈值,所以认为模型预测可行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值