📈
统计估计:用 MQL5 与 Gnuplot 估计序列参数并可视化
统计估计异常值Gnuplot可视化MQL5
为什么要先做统计估计
计量经济、价格预测类文章常默认读者精通统计、能轻松估计序列参数。但大多数模型依赖“正态分布”“已知离差”等假设,建模前必须先估计真实数据的统计参数,否则前提就是错的。
样本参数分析
假设存在一个静止过程的总体,从中抽出 N 个样本。我们不知道真实参数,只能依据有限样本估计。dStat 计算基本统计量,dHist 生成直方图数据,dRankit 生成 QQ 图分位。
int dStat(double &arr[], double &mean, double &var, double &skew, double &kurt); int dHist(double &arr[], int bins, double &x[], double &y[]); int dRankit(double &arr[], double &theo[], double &obs[]); // 调用 Gnuplot 出图 bool grPlot(string script); bool saveScript(string f, string s);
避免异常值误导
采样含过大误差(异常值)会严重拉偏估计,尤其样本少时。是否剔除异常值需谨慎——它可能是真实极端事件而非错误。决策逻辑要可解释、可回滚。
- 先用分位数/IQR 识别疑似异常值,不自动删。
- 对比“含异常值”与“剔除后”两套估计,差异大则报警。
- 时间序列中异常值对应跳空/闪崩,常是信号而非噪声。
可视化:直方图与 QQ 图
用 Gnuplot 把估计结果画出:直方图看分布形态,QQ 图(dRankit)看是否偏离正态。ShellExecuteW 可在 MQL5 里调起外部 Gnuplot 进程并传脚本。
✦ 建模前先“体检”
任何时间序列进模型前,先跑一遍 mean/var/偏度/峰度 + QQ 图。非正态、厚尾会直接废掉基于正态假设的模型。
小结
统计估计是把“假设”变成“证据”的环节:用 MQL5 算参数、Gnuplot 可视化、异常值谨慎处理,为后续建模与预测打好地基。
常见问题
不一定。样本少时异常值影响大,但它可能对应跳空/闪崩这类真实极端事件。应对比含/剔两套估计,差异大就报警而非自动删。
用 ShellExecuteW 在 MQL5 里启动外部 Gnuplot 进程并传脚本,把直方图/QQ 图渲染出来。
非正态、厚尾会直接废掉基于正态假设的模型。先跑均值/方差/偏度/峰度+QQ 图,能把错误假设挡在建模前。