有个网站是做视频相册的wordpress 多站点开启
有个网站是做视频相册的,wordpress 多站点开启,自学python需要的软件,龙岩seo外包公司基于线性伽马分布回归模型(gamma)的多变量时间序列预测 gamma多变量时间序列
matlab代码注#xff1a;暂无Matlab版本要求 -- 推荐 2018B 版本及以上在处理多变量时间序列预测问题时#xff0c;线性伽马分布回归模型#xff08;Gamma Regression#xff09;是个容易被忽视但…基于线性伽马分布回归模型(gamma)的多变量时间序列预测 gamma多变量时间序列 matlab代码 注暂无Matlab版本要求 -- 推荐 2018B 版本及以上在处理多变量时间序列预测问题时线性伽马分布回归模型Gamma Regression是个容易被忽视但实际效果不错的工具。这玩意儿特别擅长处理非负且存在异方差性的数据——比如销量预测、电力负荷这类具有明显波动规律的数据场景。今天咱们用Matlab来实操一把重点不是推导公式而是看看怎么让代码和业务场景发生化学反应。先扔个数据模拟的例子热热身。假设我们要预测某个城市的共享单车日订单量影响因素包括天气指数、地铁客流、促销活动三个变量% 生成模拟数据 rng(2023); % 固定随机种子 n 365; % 一年数据 weather 0.2*randn(n,1) 0.5; % 标准化天气指数 subway poissrnd(2000, n,1) 0.1*weather*1000; % 地铁客流与天气正相关 promo randi([0 1],n,1); % 是否促销 y 5 3*weather 0.005*subway 15*promo gamrnd(2,3,n,1); % 伽马分布响应变量 data table(weather, subway, promo, y);这里有个细节生成目标变量y时用了gamrnd函数刻意让误差项符合伽马分布。重点看参数gamrnd(2,3,...)其中形状参数2决定了分布的偏态程度——这直接影响了后续模型的拟合效果。建模的关键在于特征工程。时间序列预测必须考虑滞后项比如用前三天的数据预测明天% 创建滞后特征 lag_vars {y, weather, subway}; lags 1:3; % 滞后三期 data_lag lagmatrix(data{:,lag_vars}, lags); data_lag(any(isnan(data_lag),2),:) []; % 清理缺失值 % 合并特征矩阵 final_data [data{(max(lags)1):end, :}, array2table(data_lag)];这里有个坑直接用lagmatrix生成的滞后矩阵会包含NaN必须手动清理。更严谨的做法是用移动窗口验证但咱们先跑通流程再说核心代码model fitglm(final_data, y ~ weather subway promo y_1 y_2 weather_2,... Distribution, gamma, Link, log); disp(model)注意这里的公式语法y_1表示y的一阶滞后项。重点参数是Distribution设置为gamma以及链接函数选log——这可不是随便选的。伽马分布的期望值必须为正log链接能保证预测值始终大于0避免出现负订单量这种反常识的结果。模型诊断环节容易被忽视。除了看R-squared更要检查残差的分布是否符合假设% 残差诊断 res model.Residuals.Raw; figure; subplot(1,2,1); qqplot(res); title(QQ图检验) subplot(1,2,2); scatter(model.Fitted, res); xlabel(预测值); ylabel(残差); title(异方差检验)如果QQ图上的点明显偏离直线或者残差随着预测值增大而发散说明可能需要调整链接函数或添加交互项。这时候别死磕试试Box-Cox变换或者切分样本时段验证模型稳定性。预测新数据时要特别注意特征的时间对齐问题。假设要预测t1时刻% 模拟新输入 new_weather 0.6; new_subway 2300; new_promo 1; last_two_days final_data{end-1:end, contains(final_data.Properties.VariableNames, y_)}; % 构造预测用表格 new_data table(new_weather, new_subway, new_promo,... VariableNames, {weather,subway,promo}); new_data [new_data, array2table(last_two_days(2,:))]; % 添加滞后特征 pred_y predict(model, new_data); fprintf(预测值: %.2f\n, pred_y);这里有个骚操作手动拼接历史滞后特征。生产环境中最好封装成函数自动维护滑动窗口避免手工操作导致特征错位。最后说点实战经验伽马回归对异常值比线性回归敏感遇到促销日或极端天气时建议用分位数回归做结果对比。当变量超过10个时考虑用LASSO做特征选择防止过拟合——Matlab里用lassoGlm就能实现把分布参数改成gamma就行。这种模型最适合中等规模数据万级以下样本既能保持计算速度又比单纯用ARIMA这类传统时序模型更灵活。下次遇到波动剧烈的业务指标时不妨先试试这个伽马刀说不定有惊喜。