R语言与数据分析练习:使用ARIMA模型预测网站访问量

news/2024/5/12 9:42:18/文章来源:https://zhuang666.blog.csdn.net/article/details/118225591

R语言与数据分析练习:使用ARIMA模型预测网站访问量


使用ARIMA模型预测网站访问量

一、实验背景:

随着流量的增大,某网站的数据信息量也在以一定的幅度增长
基于该网站2016年9月~2017年2月每天的访问量,使用ARIMA模型预测网站未来7天的访问量

二、实验目的:

预测网站未来7天的访问量

三、实验设计方案和流程图:

实验设计方案:

  1. 由于我们获取的原数据文件为sql类型的,因此我们需要将原数据文件导入mysql,再通过R语言中的方法连接mysql进行数据的读取。
  2. 读取数据之后,对数据进行观察。
  3. 观察完毕,对数据进行预处理及清洗。
  4. 对整理好的数据进行序列平稳性的检查:若数据平稳,则进行下一步。若数据不平稳,将进行差分运算。
  5. 对数据进行纯随机性检测:若数据为白噪声,则进行下一步。若数据为非白噪声,数据没有研究意义,结束实验。
  6. 对数据绘制BIC图进行定阶,观察平均误差的大小,获取最优的模型数值。
  7. 使用最优的模型,预测未来7天的网站访问量。

实验设计流程图:
在这里插入图片描述

四、实验过程:

1、Mysql数据导入及数据清洗

通过 Navicat Premium 将 jc_content_viewlog.sql 文件导入mysql数据库

jc_content_viewlog.sql 数据文件下载:

文件下载链接:https://pan.baidu.com/s/165XwNDj1YQ1JYQdj90p8RQ
提取码:omop

jc_content_viewlog表的字段说明.xlsx 文件下载:

文件下载链接:https://pan.baidu.com/s/139bB8teH-CrwrDax8envlQ
提取码:es72

在这里插入图片描述

数据清洗源代码:

# 设置工作目录并导入需要的包
setwd("D:/bigdata/R语言与数据分析/project/test1")
library("RMySQL")
library(tidyr)
library(dplyr)
library(TSA)
library(tseries)
library(forecast)# 连接数据库 读取数据
mysqlconnection = dbConnect(MySQL(), user = 'root', password = '123456', dbname = 'rdata',host = 'localhost')
dbSendQuery(mysqlconnection,'SET NAMES gbk') 
data <- dbReadTable(mysqlconnection,'data')
# 将日期切分成年月日和时分秒
data <- separate(data = data, col = date_time, into = c("date_ymd", "date_hms"), sep = " ")
# 根据日期进行分组计数
data_Day <- aggregate(data$id, by=list(type=data$date_ymd),length)
# 保存一份训练数据 一份预测数据
dataView <- ts(data_Day[1:166, 2])
dataView1 <- ts(data_Day[1:173, 2])

2、绘制原数据的时序图与自相关图,检验序列的平稳性

# 绘制原数据的时序图和自相关图
# 结果得出原数据为不平稳数据 因此需要进行差分
plot(dataView, xlab = "时间/天", ylab = "访问量")  # 绘制时序图
acf(dataView, lag.max = 200)  # 绘制ACF图
# 检验序列的平稳性 
adf.test(dataView) # p值大于0.05,原数据为不平稳数据
ndiffs(dataView) # 值为1,原数据为不平稳数据# 一次差分
dataView.diff <- diff(dataView)  # 进行差分
acf(dataView.diff, lag.max = 200)  # 绘制差分后序列的ACF图
# 检验序列的平稳性 
adf.test(dataView.diff) # p值大于0.05,原数据为不平稳数据
ndiffs(dataView.diff) # 值为1,原数据为不平稳数据
# 纯随机性检验
Box.test(dataView.diff, type = "Ljung-Box") # p值小于0.05,差分后的数据为白噪声

在这里插入图片描述

3、通过纯随机性检验,判断序列的价值

# 一次差分
dataView.diff <- diff(dataView)  # 进行差分
acf(dataView.diff, lag.max = 200)  # 绘制差分后序列的ACF图
# 检验序列的平稳性 
adf.test(dataView.diff) # p值大于0.05,原数据为不平稳数据
ndiffs(dataView.diff) # 值为1,原数据为不平稳数据
# 纯随机性检验
Box.test(dataView.diff, type = "Ljung-Box") # p值小于0.05,差分后的数据为白噪声

在这里插入图片描述

4、绘制BIC图进行定价

# 绘制BIC图,根据BIC图定阶
# 原序列定阶
dataView.BIC <- armasubsets(y = dataView, nar = 5, nma = 5)
plot(dataView.BIC)
# 差分后的序列定阶
dataView.diff.BIC <- armasubsets(y = dataView.diff, nar = 5, nma = 5)
plot(dataView.diff.BIC)
# 初始化
checkout <- data.frame(p = 0, d = 0, q = 0, P = 0, D = 0, Q = 0, "残差P值" = 0, "平均误差" = 0)
test_checkout <- data.frame(p = 0, d = 0, q = 0, P = 0, D = 0, Q = 0, "残差P值" = 0, "平均误差" = 0)
# 设置行数变量 方便后期根据行号写入数据
j <- 1
# 构造一个方法
# 实现功能:根据训练数据预测结果,根据预测结果计算平均误差,
#          根据平均误差的高低,选出最优模型预测。
test_model <- function(p, q, P, Q){model <- Arima(dataView, order = c(p, 0, q),seasonal = list(order = c(P, 1, Q), period = 7))result <- Box.test(model$residuals, type = "Ljung-Box")# 预测data_Day.forecast <- forecast(model, h = 7, level = c(99.5))# 计算平均绝对百分误差error <- abs(as.numeric(data_Day.forecast[[4]]) - data_Day[167:173,2]) / data_Day[167:173,2]# 计算残差P值p.value <- round(result$p.value, 4)# 输出相关数据print(paste('p=', p, ';q=', q, ';P=', P,',Q=', Q, ';残差P值:',p.value, ';平均误差:', mean(error), collapse = ""))test_checkout[1,1] <- ptest_checkout[1,2] <- 0test_checkout[1,3] <- qtest_checkout[1,4] <- Ptest_checkout[1,5] <- 1test_checkout[1,6] <- Qtest_checkout[1,7] <- round(result$p.value, 4)test_checkout[1,8] <- mean(error) return(test_checkout)
}
# 根据BIC图,自行设定需要计算误差的p,q,P,Q
# 将参数循环传入test_model方法中
for(p in c(0,1,5)){for(q in c(1,5)){for(P in c(0,4,5)){for(Q in c(1)){test_checkout <- test_model(p, q, P, Q)checkout[j, ] <- test_checkout[1, ]j <- j + 1}}}
}
# 将checkout数据保存到本地
write.csv(checkout, "./checkout.csv", row.names = F)  # 导出每个模型的结果

选择平均误差最小的模型进行预测!
在这里插入图片描述

5、预测未来7天的网站访问

# 观察保存的数据,取最优模型预测
model <- Arima(dataView, order = c(1,0,1), seasonal = list(order = c(0,1,1), period = 7))
summary(model)
# 纯随机性检验
Box.test(model$residuals, type = "Ljung-Box") # p值小于0.05,差分后的数据为白噪声
# 用训练数据,预测原数据后7天的访问量
data_Day.forecast <- forecast(model, h = 7, level = c(99.5))
# 计算平均误差
error <- abs(as.numeric(data_Day.forecast[[4]]) - data_Day[167:173,2]) / data_Day[167:173,2]
mean(error)# 根据最优模型预测,预测未来7天的访问量
model <- Arima(dataView1, order = c(1,0,1), seasonal = list(order = c(0,1,1), period = 7))
summary(model)
# 纯随机性检验
Box.test(model$residuals, type = "Ljung-Box") # p值小于0.05,差分后的数据为白噪声
# 预测未来7天的访问量
data_Day.forecast <- forecast(model, h = 7, level = c(99.5))
# 预测结果展示
plot(data_Day.forecast,shadecols = "oldstyle")

在这里插入图片描述

五、实验结论:

模型选择:
选择平均误差最小的模型进行预测,p,q,P,Q分别为1,1,0,1

预测分析:
从图预测的结果可以看出,在未来7天内,访问量总体的趋势的向上的,但是具体到每日的网站访问量先下降,然后再上升。因此最终得出网站访问量上升趋势且波动较大!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_732494.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

R语言与数据分析练习:使用协同过滤算法实现网站的智能推荐

R语言与数据分析练习&#xff1a;使用协同过滤算法实现网站的智能推荐 使用ARIMA模型预测网站访问量 一、实验背景&#xff1a; 基于实验1中某网站2016年9月每天的访问数据,使用基于内容的协同过滤算法实现网站的智能推荐&#xff0c;帮助客户发现他们感兴趣但很难发现的网页…

R语言与数据分析练习:使用Apriori算法实现网站的关联分析

R语言与数据分析练习&#xff1a;使用Apriori算法实现网站的关联分析 使用ARIMA模型预测网站访问量 一、实验背景&#xff1a; 基于某网站的访问数据&#xff0c;使用Apriori算法对网站进行关联分析 二、实验目的&#xff1a; 预测网站访问量 三、实验设计方案和流程图&am…

大型网站技术架构(四)网站的高性能架构

2019独角兽企业重金招聘Python工程师标准>>> 网站性能是客观的指标&#xff0c;可以具体体现到响应时间、吞吐量、并发数、性能计数器等技术指标。 1、性能测试指标 1.1 响应时间 指应用执行一个操作需要的时间&#xff0c;指从发出请求到最后收到响应数据所需要的时…

官网分析(英雄传奇)(如何设计网站前端)

官网分析&#xff08;英雄传奇&#xff09;&#xff08;如何设计网站前端&#xff09; 一、总结 一句话总结&#xff1a;最开始以仿为主&#xff0c;仿的多了&#xff0c;自己就会了。分块&#xff0c;留白&#xff0c;简洁&#xff0c;图片找好&#xff0c;字体找好&#xff0…

eyoucms 怎么使用网站地图?

网站无论大小&#xff0c;单独的网站地图页面都是必需的&#xff0c;通过网站地图&#xff0c;不仅用户可以对网站的所有内容一幕了然&#xff0c;搜索引擎也可以跟踪链接爬行到网站的主要部分。一般来说&#xff0c;网站地图有两种形式&#xff1a; 一种是HTML&#xff0c;称为…

大型网站背后的高性能系统架构设计

1. 性能测试1.1. 性能指标网站性能测试的主要指标有&#xff1a;响应时间 - 响应时间(RT)是指从客户端发一个请求开始计时&#xff0c;到客户端接收到从服务器端返回的响应结果结束所经历的时间&#xff0c;响应时间由请求发送时间、网络传输时间和服务器处理时间三部分组成。并…

细数国内几个比较牛的网站UED博客

发现国内一些有创新精神的网站的UED部门很活跃&#xff0c;也很有共享精神。他们有的在网站建立了自己的团队博客&#xff0c;在里面分享他们的设计经验&#xff0c;很值得一看。其实&#xff0c;团队开博客不仅仅有利于促进团队之间的良好氛围&#xff0c;更有利于宣传网站的文…

HTTPS通信中的身份认证机制_网站劫持检测

当你访问一个网站时&#xff0c;有没有想过这个问题&#xff1a;如何保证我的访问能直达目标网站&#xff0c;而没有被中间人攻击和劫持。想要解决这个问题&#xff0c;就得依靠HTTPS中的身份认证机制。 网站劫持检测 1、检测网站是否被劫持2、域名是否被墙3、DNS污染检测4、网…

5 个在线的网站测试和验证工具

网站上线前的测试和验证是非常重要的一个环节&#xff0c;验证的意思是检查网站的页面和其他数据是否符合标准规范&#xff0c;设计规范的网站在各种浏览器上表现会一致而且良好。 为了帮助你执行这些测试和验证&#xff0c;今天我们列表了 5 个在线的工具。 Pingdom Tools Pin…

mai模板html,纯PC网站模板改为自适应模板方法

随着互联网WEB前端技术的发展&#xff0c;各项技术诞生&#xff0c;BS架构、HTML5、CSS3、JQ各种新的技术出现在我们的面前&#xff0c;今天我们就分享下只有PC站情况下&#xff0c;如何快速做成自适应结构&#xff0c;满足移动端用户体验。网站自适应结构很多人认为很麻烦&…

svn同步到网站服务器,svn hook同步更新svn到web服务器

转到SVN项目的hooks目录下面新建post-commit文件.内容如下export LANGzh_CN.UTF-8WEB/www/vhostsvn update $WEB --username user --password passwd --no-auth-cache需要注意就是必须指定字符集还有运行 svn update 需要提供用户名密码且不要缓存用户认证令牌export LANGzh_CN…

学成在线网站首页_呕心整理!最全无版权图片网站都在这了,赶紧收藏!

在亚马逊上&#xff0c;买家大多数需要靠图片和文字来了解商品&#xff0c;而买家在搜索产品时&#xff0c;最先看到的是产品图片。可以说商品的主图是决定点击率的重要因素之一&#xff0c;而listing的图片是否具有吸引力是卖家能够为自己的Listing带来更高的转化率的另一个重…

用R语言进行网站评论文本挖掘聚类

对于非结构化的网站中文评论信息&#xff0c;r的中文词频包可能是用来挖掘其潜在信息的好工具&#xff0c;要分析文本内容&#xff0c;最常见的分析方法是提取文本中的词语&#xff0c;并统计频率。频率能反映词语在文本中的重要性&#xff0c;一般越重要的词语&#xff0c;在文…

oa办公系统含手机版源码_贵阳投资控股集团召开OA协同办公系统(含网站)建设项目启动大会...

为提高集团公司办公信息资源的利用效率&#xff0c;2020年1月7日&#xff0c;贵阳投资控股集团召开OA协同办公系统(含网站)建设项目启动大会。集团党委委员、副总经理付洪伟出席会议并讲话&#xff0c;信息科技部部长周康主持会议&#xff0c;上海泛微网络科技股份有限公司贵州…

scrapy爬虫框架和selenium的使用:对优惠券推荐网站数据LDA文本挖掘

介绍 最近我们被客户要求撰写关于爬虫的研究报告&#xff0c;包括一些图形和统计输出。 每个人都喜欢省钱。我们都试图充分利用我们的资金&#xff0c;有时候这是最简单的事情&#xff0c;可以造成最大的不同。长期以来&#xff0c;优惠券一直被带到超市拿到折扣&#xff0c;…

7个设计师必备的国际顶尖设计网站

成为dA&#xff08;deviantart&#xff09;的忠实用户有很多理由——dA是最大的艺术社区&#xff1b;成为dA用户简直是设计新手的必经之路。但是&#xff0c;这些都不妨碍你加入其他专业的网站来展现你的才华。 创立于12年前的dA现在拥有最多的艺术爱好者受众。然而&#xff0c…

追踪服务器的网站,网站Tracert路由追踪|在线Tracert工具—卡卡网 www.webkaka.com

Tracert是一个dos下的网络命令&#xff0c;主要作用是对路由进行跟踪。它是一个简单的网络诊断工具&#xff0c;可以列出分组经过的路由节点&#xff0c;以及它在IP 网络中每一跳的延迟。(这里的延迟是指&#xff1a;分组从信息源发送到目的地所需的时间&#xff0c;延迟也分为…

大型分布式网站架构技术总结

出处&#xff1a;ITFLY8 网址&#xff1a;http://www.cnblogs.com/itfly8/p/4967966.html 本文是学习大型分布式网站架构的技术总结。对架构一个高性能&#xff0c;高可用&#xff0c;可伸缩&#xff0c;可扩展的分布式网站进行了概要性描述&#xff0c;并给出一个架构参考。一…

Apache+php+mysq配置本地多个虚拟网站

首先我下载的是wampserver 64位&#xff0c; 按照自己的电脑系统下载 一般就分两种 &#xff0c;1 32为操作系统&#xff0c; 2 64为操作系统。 下面是软件图 文件64位&#xff1b; 安装教程就不写了。 下一步下一步就行 下面改到了配置了 首先第一步、 这里的 gao.com 就…

一个程序员单枪匹马,靠一个网站一年赚1个亿

是什么 网站叫BuiltWith.com&#xff0c;通过它可以查看其他网站使用了什么技术&#xff0c;什么编程语言、服务器及广告系统 可以客户生成、销售情报和市场分析提供的许多服务的用户使用&#xff0c;潜在客户列表的客户等&#xff0c;帮助企业赚钱、发现潜在客户。 这个网站仅…