R语言平滑算法LOESS局部加权回归、三次样条、变化点检测拟合电视节目《白宫风云》在线收视率

简介: R语言平滑算法LOESS局部加权回归、三次样条、变化点检测拟合电视节目《白宫风云》在线收视率

原文链接:http://tecdat.cn/?p=24067


此示例基于电视节目的在线收视率。我们将从抓取数据开始点击文末“阅读原文”获取完整代码数据


# 加载软件包。
packages <- c("gplot2", "MASS", "reshpe", "splnes", 
    "XML")

分析的系列是亚伦·索尔金 (Aaron Sorkin) 的 _《_白宫风云_》_。

if (!fle.eiss(fie)) {
    # 解析HTML内容。
    html <- htmlPrse(lis?si=17ectn=a")
    # 根据id选择表格。
    tml <- pahppl(html, //tal\[@d='Tle'\]"\[1\] ?
    # 转换为数据集。
    da <- reHTML(hml)
    # 第一个数据行。
    head(da )
    # 保存本地副本。
    write.csv(ata\[, -3\], fle)
# 读取本地副本
daa <- red.sv(fie)
# 检查结果
str(dat)

Mean 是每集的平均评分,所以我们有一个参数, Count 是每集的投票数,所以我们有一个样本大小。使用标准误差方程 ,我们将计算每个评分的“误差幅度”。请注意,由于有几集收视率非常高,因此收视率分布不正常。

# 计算季
daa$saon <- 1 + (daX - 1)%/%22
# 特殊情况
at$sasn\[which(dta$sesn > 7)\] <- c(7, NA)
# 因子变量
daa$saon <- fator(aa$sesn)

我们对数据采取的最后一步是添加季编号,以便以后能够在绘图上区分它们。 除了两个特例(最后一季有 23 集,一个节目是电影特辑)外,_《_白宫风云_》_每一季 都有 22 集。我们使用除以 22 的余数来计算季,修复特殊情况,并将变量分解为绘图目的。

# 计算季 
asaon <- 1 + (aX - 1)%/%22
#  特殊情况
dtseson\[wich(dtsasn > 7)\] <- c(7, A)
# 因子变量
dtseson <- fctor(dasasn)

最后的图使用 95% 和 99% 的置信区间来可视化不确定性。

qlot(dta =dat, x = X, y = mu, clr =sasn, gem = "pont") + 
  genge(es(yin = u - 1.96\*se, ymx = u + 1.96\*se), alpa = .5) +
  golie(as(yin =mu - 2.58\*se, yax = mu + 2.58\*e), apa = .5) +

该图对于每个季节的平均收视率会更有用,这些收视率很容易用该ddply() 函数检索 。还计算了最小和最大集数,以便能够绘制每个季节的水平段。由于我们将之前的绘图保存为 ggplot2 对象,因此添加线条只需要对额外的图形元素进行编码并将其添加到保存的元素之上。

# 计算季平均值。
men <- dply(daa,.(easn), summrs, 
      ma = mean), 
      xmi= in(X, 
      xmx = ma(X)
# 将平均值添加到绘图中。
g + go_eme(daa = eas, 
                as( xmin, max,  = mean, en= man))


点击标题查阅往期相关内容


R语言里的非线性模型:多项式回归、局部样条、平滑样条、 广义相加模型GAM分析


01

02

03

04


变化点检测算法

如果您的目标是找到系列中的突然变化,请使用变化点检测算法。

# PELT算法计算变化点。
p <- tmean(atamu, 'PELT')
# 提取结果。
xmin <- c(0, max\[-legh(xmax)\])
# 绘图。
gem_segnt(dat = eg)

平滑算法:LOESS(局部加权回归)和三次样条

现在让我们平滑这个系列。基本图都将使用相同的数据,我们将在其上叠加一条通过不同方法计算的趋势线。

# 绘图
 plot(data 
          x = X,
          y = mu,
          alpa = I0.5),
          gom = line")

平滑数据的最简单方法是使用局部多项式,我们将其应用于每个季节的分数,然后应用于它们的去趋势值。更复杂的平滑方法使用 splines 。它仅用于最后一个图中。

# 每一季的LOESS平滑
 
  LOESS(se = FALSE) + 
  goln(y = tmu,neyp= dhe"+
as(colo = sason)

# 对去趋势的数值进行LOESS平滑处理
  smooth(se = FALSE) + 
  eoin(es =memu)), itype = ") +

# 立方样条
g + 
  smooth( "m", ns(x, 8)

三次样条提供的信息与我们从变化点检测中了解到的情况几乎相同:该系列有三个时期,是由于观众收视率的一次下降。

# 三次样条和变化点
gmoth(method =  ~ ns(x, 8))

相关文章
R语言中的支持向量机(SVM)与K最近邻(KNN)算法实现与应用
【9月更文挑战第2天】无论是支持向量机还是K最近邻算法,都是机器学习中非常重要的分类算法。它们在R语言中的实现相对简单,但各有其优缺点和适用场景。在实际应用中,应根据数据的特性、任务的需求以及计算资源的限制来选择合适的算法。通过不断地实践和探索,我们可以更好地掌握这些算法并应用到实际的数据分析和机器学习任务中。
(四)网络编程之请求分发篇:负载均衡静态调度算法、平滑轮询加权、一致性哈希、最小活跃数算法实践!
先如今所有的技术栈中,只要一谈关于高可用、高并发处理相关的实现,必然会牵扯到集群这个话题,也就是部署多台服务器共同对外提供服务,从而做到提升系统吞吐量,优化系统的整体性能以及稳定性等目的。
128 2
R语言混合SVD模型IBCF协同过滤推荐算法研究——以母婴购物平台为例
R语言混合SVD模型IBCF协同过滤推荐算法研究——以母婴购物平台为例
R语言贝叶斯Metropolis-Hastings采样 MCMC算法理解和应用可视化案例
R语言贝叶斯Metropolis-Hastings采样 MCMC算法理解和应用可视化案例
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
81 3

热门文章

最新文章