基于线性逆高斯回归的多变量时间序列预测的Matlab代码

张开发
2026/5/5 15:15:44 15 分钟阅读

分享文章

基于线性逆高斯回归的多变量时间序列预测的Matlab代码
基于线性逆高斯回归(inverse gaussian)的多变量时间序列预测 inverse gaussian多变量时间序列 matlab代码 注暂无Matlab版本要求 -- 推荐 2018B 版本及以上在工业预测和金融数据分析中逆高斯回归因其对正偏态数据的良好适应性逐渐崭露头角。今天咱们来点硬核实操——用Matlab玩转基于逆高斯分布的多变量时间序列预测。无需复杂公式推导直接上手代码开干。先整点模拟数据热热身% 生成三变量时间序列2015-2023年 dates datetime(2015,1,1):calmonths(1):datetime(2023,12,31); n length(dates); rng(2023); % 固定随机种子 % 自变量矩阵趋势项季节项噪声 X [0.1*(1:n) 50*sin(2*pi*(1:n)/12),... 0.03*(1:n).^2 20*cos(2*pi*(1:n)/6),... randn(n,1)*5 30]; % 响应变量构造含逆高斯特性 mu 100 0.8*X(:,1) - 1.2*X(:,2) 0.5*X(:,3); lambda 15; % 形状参数 y zeros(n,1); for i 1:n y(i) random(InverseGaussian, mu(i), lambda); end这段代码的亮点在于构造响应变量时使用了逆高斯分布特有的参数结构。注意到mu参数既作为均值又作为线性组合结果这种双重身份是逆高斯回归的核心设定。基于线性逆高斯回归(inverse gaussian)的多变量时间序列预测 inverse gaussian多变量时间序列 matlab代码 注暂无Matlab版本要求 -- 推荐 2018B 版本及以上上主菜——模型训练部分% 拆分训练集/测试集 train_ratio 0.8; split_idx floor(n*train_ratio); X_train X(1:split_idx,:); y_train y(1:split_idx); dates_train dates(1:split_idx); % 拟合逆高斯回归模型 model fitglm(X_train, y_train, linear,... Distribution, inverse gaussian,... Link, identity,... Intercept, true); % 输出模型参数 disp(模型系数:); disp(model.Coefficients);敲黑板Link, identity这个设定直接决定了预测值的计算方式。如果用默认的倒数链接reciprocal预测公式会变成1/(βX)这里保持线性关系更直观。但要注意数据必须满足正向约束毕竟逆高斯分布不支持负值。预测未来走势才是重头戏% 生成预测期自变量延续历史趋势 X_future [X(split_idx,1) 0.1*(1:(n-split_idx)),... X(split_idx,2) 0.03*(1:(n-split_idx)).^2,... randn(n-split_idx,1)*5 30]; % 执行预测 [y_pred, pred_ci] predict(model, X_future, Alpha, 0.05); % 可视化对比 figure(Position, [100,100,800,400]) plot(dates, y, b, LineWidth,1.5) hold on plot(dates(split_idx1:end), y_pred, r--, LineWidth,2) fill([dates(split_idx1:end), fliplr(dates(split_idx1:end))],... [pred_ci(:,1); flipud(pred_ci(:,2))], r, FaceAlpha,0.1) xline(dates(split_idx), k--, LineWidth,1.5) legend(实际值,预测值,95%置信区间) title(多变量逆高斯回归预测效果)这里有个骚操作——预测时自变量的构造延续了训练集的增长模式。实际应用中可能需要更精细的外推方法比如用ARIMA模型单独预测各个自变量后再代入。几点避坑指南数据标准化不是必须的但若自变量量纲差异大建议做z-score处理模型诊断别偷懒一定要画残差图figure plotResiduals(model, probability) title(残差概率图)遇到收敛问题时尝试改用log链接函数相当于构建乘法模型而非加法模型逆高斯回归在应对类似客户等待时间、保险索赔金额这类右偏数据时表现优异。但别指望它是万能药——当时间序列存在强自相关性时还是得结合传统时序模型才能打满伤害。下次可以试试把AR项作为自变量塞进模型里可能会有惊喜。

更多文章