You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言中计算平均方向准确率(Mean Directional Accuracy)?

如何在R中计算平均方向准确率(MDA)

当然可以!平均方向准确率(MDA)是评估时间序列预测方向正确性的经典指标——它核心衡量的是你预测的涨跌方向和实际市场涨跌方向吻合的比例。针对你手里的股票实际值+情绪得分的数据框,在R里有两种简单的实现方式,我给你一步步讲清楚:

方法一:自定义函数(灵活适配你的数据逻辑)

首先我们得明确两个关键方向的定义(你可以根据自己的研究需求调整):

  • 实际方向:股票每日价格的涨跌方向,用当日价格与前一日的差值符号表示(正=涨,负=跌)
  • 预测方向:这里假设你用情绪得分的符号作为涨跌预测(正=预测涨,负=预测跌);如果你的逻辑是用情绪得分的变化方向来预测,只需要修改下面的代码即可。

自定义MDA计算函数

calculate_mda <- function(actual_prices, sentiment_scores) {
  # 1. 计算实际价格的日变化方向
  actual_diffs <- diff(actual_prices)
  actual_directions <- sign(actual_diffs)
  
  # 2. 把情绪得分转换为预测方向(去掉第一个值,因为实际变化少了一个观测)
  pred_directions <- sign(sentiment_scores[-1])
  
  # 3. 过滤掉实际价格平盘(变化为0)的情况(这类观测无法判断方向对错)
  valid_indices <- actual_directions != 0
  actual_valid <- actual_directions[valid_indices]
  pred_valid <- pred_directions[valid_indices]
  
  # 4. 计算方向一致的比例
  correct_count <- sum(actual_valid == pred_valid)
  mda <- correct_count / length(actual_valid)
  
  return(mda)
}

用示例数据测试

# 模拟你的数据结构
set.seed(123)  # 固定随机种子,结果可复现
stock_data <- data.frame(
  actual_price = c(100, 102, 99, 101, 105, 103, 104),  # 股票实际价格
  sentiment = c(0.2, 0.5, -0.1, 0.3, 0.6, -0.2, 0.1)   # 每日情绪得分
)

# 计算MDA
mda_result <- calculate_mda(stock_data$actual_price, stock_data$sentiment)
cat("平均方向准确率(MDA):", round(mda_result, 4), "\n")

方法二:用现成统计包快速计算

如果你不想自己写函数,可以用专门的时间序列评估包TSmetrics,它内置了mda()函数,能自动处理方向计算。

步骤:

  1. 安装并加载包:
install.packages("TSmetrics")
library(TSmetrics)
  1. 注意:这个函数需要实际价格序列和预测价格序列作为输入(不是直接用情绪得分)。如果你的情绪得分是用来预测价格的,先得到预测价格后再用这个函数:
# 模拟预测价格(这里只是示例,你需要替换成自己的预测结果)
stock_data$predicted_price <- c(NA, 101, 100, 102, 106, 104, 103)

# 计算MDA
mda_from_package <- mda(stock_data$actual_price, stock_data$predicted_price)
cat("使用TSmetrics包计算的MDA:", round(mda_from_package, 4), "\n")

一些关键注意事项

  • 平盘处理:实际价格无变化(diff=0)的观测通常会被排除,因为这类情况没有明确的涨跌方向,无法验证预测对错。
  • 预测逻辑调整:如果你的预测方向不是基于情绪得分的符号,而是情绪得分的变化(比如情绪上升预测涨),只需要把pred_directions <- sign(diff(sentiment_scores))即可。
  • 样本量:确保你的时间序列有足够多的观测值,MDA结果才具有统计意义。

内容的提问来源于stack exchange,提问作者davide andriolo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:18:53