当前位置: 首页 > news >正文

从0开始学习R语言--Day30--函数型分析

        在研究离散变量之间的影响时,我们往往只能获取类似中位数,平均数点来额外数据特点;但如果数据本身具有时间特性的话,我们可以尝试运用函数型分析,将静态的离散点转为动态过程来分析,即若本来是分析离散点对另一个变量的影响,那么转换后就变为研究一条曲线的变化趋势是否对应了另一个变量的变化特点。

        比如气温数据分析冰淇淋销量时,只看离散点只能知道气温越高,销量越好,但若看趋势,很可能捕捉到在下午气温会比其他时候更高,卖出更多冰淇淋的特点。以下是一个例子:

library(fda)# 生成模拟数据 -------------------------------------------------
set.seed(123)
n <- 100  # 样本量
time_points <- seq(0, 1, length.out=50)  # 观测时间点# 生成随机温度曲线(函数型X)
true_curve <- sin(2 * pi * time_points) * exp(-time_points)
X_curves <- t(replicate(n, true_curve + rnorm(length(time_points), sd=0.5)))# 生成产量Y(与曲线变化率相关)
# Y <- 5 * apply(X_curves, 1, function(x) sum(diff(x))) + rnorm(n, sd=2)
Y <- 5 * apply(X_curves, 1, function(x) sum(abs(diff(x)))) + rnorm(n, sd=2)
# 创建函数型数据对象
basis <- create.bspline.basis(c(0,1), nbasis=15)
X_fd <- smooth.basis(time_points, t(X_curves), basis)$fd# 函数型线性回归
fit <- fRegress(Y ~ X_fd)  # 注意这里变量名是X_fd# 预测新数据
new_curve <- true_curve + 0.3 * sin(4 * pi * time_points)
new_fd <- smooth.basis(time_points, new_curve, basis)$fdbeta_fd <- fit$betaestlist[[2]]$fd  # 第1个是截距,第2个是X_fd的系数# 计算预测值:Y = 截距 + 积分(X(t) * beta(t) dt)
intercept <- fit$betaestlist[[1]]$fd$coefs  # 截距项
pred_integral <- inprod(new_fd, beta_fd)    # 函数内积
prediction <- intercept + pred_integralprint(paste("预测产量:", prediction))# 输出结果
plot(new_fd, main="新温度曲线")
print(paste("预测产量:", round(prediction, 2)))

输出:

[1] "预测产量: 153.38"

图像显示温度按照正弦曲线的趋势波动,但在实际应用中,在画图时一般不推荐用标准化的时间轴,会忽略真实的现实信息,像这里便无法判断时间段指的是一个小时还是12个小时。

http://www.lryc.cn/news/574369.html

相关文章:

  • SQL Server2022版详细安装教程(Windows)
  • 63-差分电流检测电路
  • 【Verilog】Verilator的TestBench该用C++还是SystemC
  • docker方式启动Jenkins
  • Python训练营---DAY56
  • C#串口通讯实战指南
  • RAW图像简单可视化以及png、jpg的区别
  • 设计模式 - 抽象工厂
  • AI智能体——MCP 模型上下文协议
  • 71-Oracle Undo与Flashback管理(Guarantee设置)深度解析
  • vue3+ELInput无法输入的问题
  • 传输层协议UDP
  • 服务器中集群防御和单机防御分别是指什么?
  • (cvpr2025) DefMamba: Deformable Visual State Space Model
  • github常用插件
  • Java编程中的设计模式:单例模式的深度剖析
  • EEG分类攻略2-Welch 周期图
  • Python 数据分析与可视化 Day 5 - 数据可视化入门(Matplotlib Seaborn)
  • Spring Boot使用MCP服务器
  • Flask框架index.html里引用的本地的js和css或者图片
  • EEG分类 - Theta 频带 power
  • C++ Vector 基础入门操作
  • QML革命:下一代GUI开发的核心优势详解
  • 论文笔记:Answering POI-Recommendation Questions using TourismReviews
  • 单片机——浮点数转换4位数码管显示
  • 【笔记】在Cygwin上使用mintty连接wsl
  • 1.2、CAN总线帧格式
  • Apache SeaTunnel Flink引擎执行流程源码分析
  • DeepSeek今天喝什么随机奶茶推荐器
  • 如何利用Charles抓包工具提升API调试与性能优化