R语言学习—2—安德鲁斯曲线分析时间序列数据

news/2024/10/9 13:31:23/

1、什么是Andrews 曲线法

Andrews 曲线法使用二维坐标系展示可视化结果,将多维数据的每一数据项通过一个周期函数映射到二维坐标系中的一条曲线上,通过对曲线的观察,用户能够感知数据的聚类等状况。

调和曲线在这里插入图片描述

链接: 多元数据Andrews曲线绘图实例及R语言实现

2、Andrews 曲线怎么分析

绘制曲线:将每个数据点的角度和距离映射到复平面上,并连接成曲线。每条曲线代表一个数据点,整体形成安德鲁斯曲线图。

数据框中的不同因素或特征会贡献出特定的正弦波和余弦波的振幅和相位

通过观察安德鲁斯曲线图,可以得出以下分析结果:

  • 变量之间的关系
    曲线的形状和走势可以反映出变量之间的相关性和趋势。
  • 数据聚类
    相似的数据点在曲线图上可能会聚集在一起,从而揭示出数据的聚类结构。
  • 异常值检测
    异常值可能表现为与其他数据点明显不同的曲线形状。

也就是说,安德鲁斯曲线能够让我们观察到不同数据点之间的相关性和差异性,但是本身并不提供关于某个具体因素的结论。

3、R语言实现安德鲁斯曲线函数

在这里插入图片描述

# 假设的气候数据集
climate_data <- data.frame(City = c("CityA", "CityB", "CityC", "CityD", "CityE"),AvgTemp = c(15, 20, 10, 25, 18),  # 年平均温度(摄氏度)AvgRainfall = c(800, 600, 1200, 900, 750),  # 年平均降水量(毫米)AvgWindSpeed = c(5, 3, 7, 2, 4)  # 年平均风速(米/秒)
)# 确保City列是行名
rownames(climate_data) <- climate_data$City
climate_data <- climate_data[, -1]  # 移除City列,因为它现在是行名# 调用msa.andrews函数
msa.andrews <- function(x){if (is.data.frame(x)) # 检查是否是数据框x <- as.matrix(x) # 转换成矩阵t <- seq(-pi, pi, pi/30)m <- nrow(x)n <- ncol(x)f <- array(0, c(m, length(t)))for(i in 1:m){f[i,] <- x[i,1]/sqrt(2)for( j in 2:n){freq <- (j - 1) / 2 # 使用基于索引的频率if (j %% 2 == 0)f[i,] <- f[i,] + x[i,j] * sin(freq * t)elsef[i,] <- f[i,] + x[i,j] * cos(freq * t)} }plot(c(-pi,pi), c(min(f),max(f)), type="n", xlab="", ylab="")for(i in 1:m) lines(t, f[i,], col=i)# 使用行名作为图例的标签(如果行名存在)if (!is.null(rownames(x))) {legend("topright", rownames(x), col=1:m, lty=1, bty='n', cex=0.8)} else {legend("topright", paste("Series", 1:m), col=1:m, lty=1, bty='n', cex=0.8)}
}# 调用msa.andrews函数(使用修正后的版本)
msa.andrews(climate_data)

4、实例及运行结果

在这里插入图片描述

在这里插入图片描述

5、分析结论

根据提供的msa.andrews函数和climate_data数据集,当你调用msa.andrews(climate_data)时,将得到一个安德鲁斯曲线图,其中每个城市的气候数据(年平均温度、年平均降水量、年平均风速)都被转化为曲线上的一个序列。

从这个安德鲁斯曲线图中,可以得到以下几个结论:

相似性和差异性:

通过观察各个城市曲线在二维平面上的位置、形状和重叠程度,你可以判断哪些城市的气候特征更为相似,哪些城市的气候特征差异较大。

主要特征:

由于安德鲁斯曲线是基于傅里叶变换构建的,曲线的主要波动和形状可能反映了不同气候特征(如温度、降水量、风速)的周期性或主导模式。

季节性影响:

虽然安德鲁斯曲线本身不直接表示季节性,但通过观察曲线的周期性波动,你可能能够推断出某些气候特征的季节性变化(尽管这种推断需要额外的气候学知识)。

主导因素:

如果某个城市在曲线图上的位置与其他城市显著不同,这可能意味着该城市在某一或多个气候特征上与其他城市存在显著差异。例如,如果某个城市的曲线在降水量维度上明显上翘,这可能表明该城市的降水量较高。

异常值或极端情况:

如果某个城市的曲线在图上表现出异常或极端行为(如与其他城市曲线明显分离或表现出异常的波动模式),这可能表示该城市在某些气候特征上存在异常或极端情况。

6、该例子结论

  1. CityD的气候特征较为独特
    在安德鲁斯曲线图中,CityD的曲线与其他城市的曲线相比,形状和位置都有较大的差异。这可能意味着CityD在年平均温度、年平均降水量和年平均风速这三个气候特征上与其他城市存在显著的差异。
  2. CityA和CityE的气候特征较为相似
    从图中可以看出,CityA和CityE的曲线在形状和位置上都比较接近,这表示这两个城市在年平均温度、年平均降水量和年平均风速这三个气候特征上可能较为相似。
  3. 降水量对曲线形状影响显著:
    由于年平均降水量(AvgRainfall)的数值较大(单位是毫米),相对于年平均温度和年平均风速,它可能对曲线形状的影响更大。因此,那些年平均降水量较高的城市(如CityC和CityD)在曲线图上可能会表现出更显著的波动或偏离。
  4. 风速对曲线位置有一定影响
    虽然年平均风速(AvgWindSpeed)的数值相对较小,但它仍然对曲线在二维平面上的位置产生了一定的影响。这可以通过观察不同城市曲线在水平方向上的相对位置来验证。
  5. 温度对曲线的影响可能较为复杂
    由于年平均温度(AvgTemp)是一个较为平稳的气候特征,它可能不会对曲线形状产生显著的影响。然而,它可能与其他气候特征(如降水量和风速)相互作用,共同决定曲线在二维平面上的位置和方向。

需要注意的是,这些结论是基于安德鲁斯曲线图的直观分析得出的,可能存在一定的主观性和误差。为了得到更准确、更深入的结论,通常需要结合其他统计方法、气候学知识和领域专家的解释。

7、注意

(1)byt参数

bty参数可以看作是box type的缩写,用于控制绘图边框的显示。该参数的取值范围包括"o"、“l”、“u”、“c”、"]“和"n”,每个取值对应着不同的边框显示方式。例如,"o"表示绘制完整的边框(默认值),"l"表示只绘制x轴和y轴的边框,形状类似于字母L;“c"表示只在上、左、下三个方向绘制边框,形状类似于字母C;”]"表示只在上、右、下三个方向绘制边框,形状类似于右方括号;"u"表示只在左、下、右三个方向绘制边框,形状类似于字母U。

以上信息仅供参考,如需了解更多关于bty参数的信息,建议查阅相关编程语言的文档或教程。


http://www.ppmy.cn/news/1449071.html

相关文章

conda环境查看当前可下载的Django版本

要使用conda查看可用的Django版本&#xff0c;你需要使用conda search命令。以下是如何进行操作的步骤&#xff1a; 打开你的终端。输入以下命令&#xff1a; conda search django运行这个命令后&#xff0c;你将看到一个列表&#xff0c;其中包含了在当前配置的conda源中可用…

Python异步Redis客户端与通用缓存装饰器

前言 这里我将通过 redis-py 简易封装一个异步的Redis客户端&#xff0c;然后主要讲解设计一个支持各种缓存代理&#xff08;本地内存、Redis等&#xff09;的缓存装饰器&#xff0c;用于在减少一些不必要的计算、存储层的查询、网络IO等。 具体代码都封装在 HuiDBK/py-tools: …

爬虫学习:基本网络请求库的使用

目录 一、urllib网络库 1.urlopen()方法 2.request方法 二、requests网络请求库 1.主要方法 2.requests.get()和requests.post() 一、urllib网络库 1.urlopen()方法 语法格式&#xff1a; urlopen(url,data,timeout,cafile,capath,context) # url:地址 # data:要提交的数据…

如何避免 sql 注入?

SQL注入是一种常见的安全漏洞&#xff0c;攻击者通过在应用程序的输入字段中插入或“注入”恶意的SQL代码&#xff0c;来影响后端数据库的正常查询。为了避免SQL注入&#xff0c;可以遵循以下最佳实践&#xff1a; 使用参数化查询或预处理语句&#xff1a; 这是防止SQL注入的最…

06 - 步骤 add constants

简介 Add Constants 步骤是用于在数据流中添加常量字段的步骤。它允许用户在数据流中插入一个或多个常量字段&#xff0c;并为这些字段指定固定的数值、字符串或其他类型的常量值。 使用 场景 我需要在数据清后&#xff0c;这个JSON 字符串有一个固定的行流数据。 1、拖拽…

【实时数仓架构】方法论

笔者不是专业的实时数仓架构&#xff0c;这是笔者从其他人经验和网上资料整理而来&#xff0c;仅供参考。写此文章意义&#xff0c;加深对实时数仓理解。 一、实时数仓架构技术演进 1.1 四种架构演进 1&#xff09;离线大数据架构 一种批处理离线数据分析架构&#xff0c;…

AI图书推荐:ChatGPT写论文的流程与策略

论文一直是任何学术学位的顶峰。它展示了学生在研究领域的兴趣和专业知识。撰写论文也是一个学习经验&#xff0c;为学术工作以及专业研究角色做好准备。但是&#xff0c;论文工作总是艰苦的&#xff0c;通常是充满乐趣和创造性的&#xff0c;但有时也是乏味和无聊的。生成式人…

Cloudflare高级防御规则 看看我的网站如何用防御的

网站已趋于稳定&#xff0c;并且经过nginx调优。我想先分享一下Cloudflare的WAF规则&#xff0c;因为这是最有效的防御之一&#xff0c;可以抵御大量恶意攻击流量&#xff0c;我已经验证了数月。 对于海外独立站电商网站&#xff0c;Cloudflare的CDN服务是首选&#xff0c;它强…