您现在的位置: 主页 > 行业动态 > 今日快讯:每天都和时间序列打交道,我总结了这篇文章! 来源:程序员客栈 时间:2023-06-20 15:56:48 Datawhale干货 作者:戳戳龍,上海交通大学,量化算法工程师(相关资料图)前言? 平时工作中每天都在和时间序列打交道,对时间序列分析进行研究是有必要的? 分享和交流一些自己的在时序处理方面的心得,提供一些思路? 介绍时序的发展情况,以及目前业界常用的方法? 代码希望能模板化,能直接复制过去使用时序方法发展时间序列特征?series = trend + seasons + dependence+ error趋势? 时间序列的趋势分量表示该序列均值的持续的、长期的变化Df["ma20"] = Df["amt"].rolling(20).mean()周期性(季节性)季节时序图def plot_season(Df): df = Df.copy() # 计算每周属于哪一年 df["year"] = df["date"].dt.year # 计算每周为一年当中的第几周 df["week_of_year"] = df["date"].dt.weekofyear for year in df["year"].unique(): tmp_df = df[df["year"] == year] plt.plot(tmp_df["week_of_year"], tmp_df["amt"], ".-", label=str(year)) plt.legend() plt.show()周期判断?如果每隔h个单位,ACF值有一个局部高峰,则数据存在以h为单位的周期性from statsmodels.graphics.tsaplots import plot_acfplot_acf(Df["amt"], lags=500).show()自相关性自相关?自相关函数 autocorrelation function有序的随机变量序列与其自身相比较自相关函数反映了同一序列在不同时序的取值之间的相关性from statsmodels.graphics.tsaplots import plot_acf_ = plot_acf(Df["amt"], lags=50)偏自相关from statsmodels.graphics.tsaplots import plot_pacfplot_pacf(Df["amt"], lags=5)残差外部变量残差Prophet?官方文档:https://facebook.github.io/prophet/docs/quick_start.html#python-api原理模型结构?模型结构——关于时间的广义线性模型g(t):trend,用分段线性函数或逻辑增长曲线(logistic)拟合s(t):seasonality,用傅里叶级数拟合。可以叠加多个季节性,如weekly,yearly (s = s1+s2……)h(t):regressor,用线性函数拟合。可以叠加多个外部变量,如节假日、温度、活动(h = h1+h2+……):模型残差 不用拟合以上方程也可以写成乘法形式:乘法形式和加法形式可以相互转换,乘法形式两边取对数就是加法形式趋势分段线性函数?线性趋势函数分段线性趋势函数超参数,由用户给出分几段参数,根据历史数据拟合k:曲线增长速率m:曲线的截距逻辑增长曲线?函数展示:https://www.desmos.com/calculator/8pnqou9ojy?lang=zh-CN超参数C:渐近线一共分几段参数k:曲线增长速率m:拐点对应时间周期性?任何周期性函数都可以表示成傅里叶级数超参数:由用户给定傅里叶级数的阶数,越大,季节性曲线波动越大,越容易过拟合参数:由历史数据拟合、系数? 函数展示:(https://www.desmos.com/calculator/5prck2beq1?lang=zh-CN外部因素: 模型输入, 外部因素在时刻的取值Z可以是0-1变量 (e.g.是否是法定假日,是否是春节,是否有促销)也可以是连续变量 (e.g.产品价格, 温度,降雨量):线性回归系数算法流程1️⃣ 先设定表达式(超参数)2️⃣ 根据训练集数据求解参数实践发电耗煤预测df_train = Df[ (Df["date"]<"2022-01-01") & (Df["date"]>="2018-01-01") ]df_test = Df[ (Df["date"]>="2022-01-01")]def FB(data): df = pd.DataFrame({ "ds": data.date, "y": data.amt, })# df["cap"] = data.amt.values.max()# df["floor"] = data.amt.values.min() m = prophet.Prophet( changepoint_prior_scale=0.05, daily_seasonality=False, yearly_seasonality=True, #年周期性 weekly_seasonality=True, #周周期性# growth="logistic", ) m.add_seasonality(name="monthly", period=30.5, fourier_order=5, prior_scale=0.1)#月周期性 m.add_country_holidays(country_name="CN")#中国所有的节假日 m.fit(df) future = m.make_future_dataframe(periods=30, freq="D")#预测时长# future["cap"] = data.amt.values.max()# future["floor"] = data.amt.values.min() forecast = m.predict(future) fig = m.plot_components(forecast) fig1 = m.plot(forecast) a = add_changepoints_to_plot(fig1.gca(), m, forecast) return forecast,mforecast,m = FB(df_train)def FPPredict(data,m): df = pd.DataFrame({ "ds": data.date, "y": data.amt, }) df_predict = m.predict(df) df["yhat"] = df_predict["yhat"].values df = df.set_index("ds") df.plot() return dfdf = FPPredict(df_test.tail(200),m)申购赎回金额预测kaggle notebook[1]Purchase Redemption Data.zipimport pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport prophetfrom prophet.diagnostics import cross_validationfrom prophet.diagnostics import performance_metricsfrom prophet.plot import plot_cross_validation_metricimport warningswarnings.filterwarnings("ignore")data_user = pd.read_csv("../input/purchase-redemption/Purchase Redemption Data/user_balance_table.csv")data_user["report_date"] = pd.to_datetime(data_user["report_date"], format="%Y%m%d")data_user.head()data_user_byday = data_user.groupby(["report_date"])["total_purchase_amt","total_redeem_amt"].sum().sort_values(["report_date"]).reset_index()data_user_byday.head()申购#定义模型def FB(data: pd.DataFrame): df = pd.DataFrame({ "ds": data.report_date, "y": data.total_purchase_amt, })# df["cap"] = data.total_purchase_amt.values.max()# df["floor"] = data.total_purchase_amt.values.min() m = prophet.Prophet( changepoint_prior_scale=0.05, daily_seasonality=False, yearly_seasonality=True, #年周期性 weekly_seasonality=True, #周周期性# growth="logistic", )# m.add_seasonality(name="monthly", period=30.5, fourier_order=5, prior_scale=0.1)#月周期性 m.add_country_holidays(country_name="CN")#中国所有的节假日 m.fit(df) future = m.make_future_dataframe(periods=30, freq="D")#预测时长# future["cap"] = data.total_purchase_amt.values.max()# future["floor"] = data.total_purchase_amt.values.min() forecast = m.predict(future) fig = m.plot_components(forecast) fig1 = m.plot(forecast) return forecast,mresult_purchase,purchase_model = FB(data_user_byday.iloc[:-30])def FPPredict(data,m): df = pd.DataFrame({ "ds": data.report_date, "y": data.total_purchase_amt, })# df["cap"] = data.total_purchase_amt.values.max()# df["floor"] = data.total_purchase_amt.values.min() df_predict = m.predict(df) df["yhat"] = df_predict["yhat"].values df = df.set_index("ds") df.plot() return dfpurchase_df = FPPredict(data_user_byday.iloc[-30:],purchase_model)赎回#定义模型def FB(data: pd.DataFrame): df = pd.DataFrame({ "ds": data.report_date, "y": data.total_redeem_amt, }) df["cap"] = data.total_purchase_amt.values.max() df["floor"] = data.total_purchase_amt.values.min() m = prophet.Prophet( changepoint_prior_scale=0.05, daily_seasonality=False, yearly_seasonality=True, #年周期性 weekly_seasonality=True, #周周期性 growth="logistic", )# m.add_seasonality(name="monthly", period=30.5, fourier_order=5, prior_scale=0.1)#月周期性 m.add_country_holidays(country_name="CN")#中国所有的节假日 m.fit(df) future = m.make_future_dataframe(periods=30, freq="D")#预测时长 future["cap"] = data.total_purchase_amt.values.max() future["floor"] = data.total_purchase_amt.values.min() forecast = m.predict(future) fig = m.plot_components(forecast) fig1 = m.plot(forecast) return forecastresult_redeem = FB(data_user_byday)Bonus 时间序列特征工程https://www.heywhale.com/mw/project/63904f5658e3bea6a3e52800EDAimport sweetviz as svdef eda(df, name, target=None): sweet_report = sv.analyze(df, target_feat=target) sweet_report.show_html(f"{name}.html")def eda_compare(df1, df2, name, feature, target): feature_config = sv.FeatureConfig(force_text=feature, force_cat=feature) sweet_report = sv.compare(df1, df2, feat_cfg=feature_config, target_feat=target) sweet_report.show_html(f"{name}_compare.html")完整版请访问:https://www.wolai.com/stupidccl/5dqha79nnrPMf5xTAs6jUu参考资料[1]kaggle notebook: https://www.kaggle.com/code/stupidccl/time-serious-analysis-1/edit/run/107631286干货学习,点赞三连↓ 经抢救无效死亡!官方深夜通报 << 上一篇 最后一页 下一篇 >> X 关闭 太阳能 中国煤炭工业协会:全国煤炭供应保障能力大幅增加 2022-07-05 15:46:17 黄河源头玛多县突降大雪 民警抗雪保畅 2022-02-14 15:26:32 西藏林芝救护一只闯入民居被困雪豹 2022-02-14 15:26:30 中国煤炭工业协会:全国煤炭供应保障能力大幅增加 2022-07-05 15:46:17 广西德保设立“黄码医院” 为全域内红、黄码人员就医开通“绿色通道” 2022-02-14 15:26:33 广西百色:12日共核酸采样3849118人次 2022-02-14 15:26:33 新疆开都河呈现冰裂景观 镜面翡翠镶嵌河面 2022-02-14 15:26:32 黄河源头玛多县突降大雪 民警抗雪保畅 2022-02-14 15:26:32 秦皇岛山区留守儿童寒假见闻:年味不“淡” 关爱不“断” 2022-02-14 15:26:32 今日快讯:每天都和时间序列打交道,我总结了这篇文章! 2023-06-20 15:56:48 经抢救无效死亡!官方深夜通报 2023-06-20 15:17:37 追光者,耀不凡!三生(中国)第15届嗨购嘉年华暨游园博览会盛大开幕 2023-06-20 14:50:54 世界新消息丨诺基亚6300恢复出厂设置密码详解 2023-06-20 14:41:25 京多安:惊讶庆祝派对能嗨那么久,现在人尽皆知格10是派对机器了 2023-06-20 13:43:01 小米无线充电达到80W 不到20分钟充满_速讯 2023-06-20 13:37:53 茅台 五粮液大跌 白酒板块怎么了 投资逻辑变了 有哪些变化-全球微动态 2023-06-20 12:46:25 每日焦点!上海沪工: 公司于2018年10月开通了微博,微博名称为“上海沪工” 2023-06-20 12:11:51 焦点速看:五粮液:集团子公司入股光伏企业 跟上市公司没关系 2023-06-20 11:44:30 夏季适合健步走 请查收正确打开方式 2023-06-20 11:19:44 胡莱三国张辽怎么获得_胡莱三国真张辽怎么打技能求高手!!! 2023-06-20 11:07:13 生猪:端午备货有支撑 但出栏意愿压制反弹空间 2023-06-20 10:50:58 今日热讯:加强执法培训 提升作风形象 2023-06-20 10:02:25 dnf帕拉丁是固伤职业吗(dnf帕拉丁是百分比职业还是固伤) 2023-06-20 09:44:04 一幅画 一座城 2023-06-20 09:19:09 微资讯!6月20日生意社阔叶木浆基准价为4300.00元/吨 2023-06-20 08:59:48 发生压疮的最主要原因 压疮发生的主要原因 全球观焦点 2023-06-20 08:18:59 华利集团(300979.SZ):目前部分运动品牌的库存比较高-全球热讯 2023-06-20 07:23:32 世界时讯:[荒野乱斗同人文]格斯&巴斯特:“桃花源记” 2023-06-20 06:18:58 最新消息:张家港市南丰镇:线缆下垂成隐患,先锋出马急排险 2023-06-20 05:23:23 【男性向/年上】我可否将你比作一个夏天 2023-06-20 03:29:29 sony(z2) 2023-06-20 00:59:46 中国外运:2022年年度权益分派10派1元 2023-06-19 22:48:18 真我RealmeGTNeo5SE在哪里设置充电动画 2023-06-19 22:08:08 世界微资讯!“港币-人民币双柜台模式”推动香港离岸人民币市场不断壮大 2023-06-19 21:06:13 当前热门:珠城科技将于6月26日解禁124.72万股 2023-06-19 20:45:54 撬动《嘉人》给品牌拍大片,「出众星时代」“出众”在哪儿? 2023-06-19 20:02:22 《冲刺赛车物语》二三周目纯开罗车极限攻略 2023-06-19 19:27:26 今日快看!《崩坏星穹铁道》尘世百态成就完成策略 2023-06-19 18:52:30 任慧峰离任中邮创业旗下5只基金 2023-06-19 18:06:23 天天微速讯:网贷延期还款申请条件是什么?什么叫做网贷延期? 2023-06-19 17:49:31 商务部:前五月我国企业承接服务外包合同额同比增长12.3% 2023-06-19 17:12:01 港交所开启“双柜台模式”,人民币可直接买腾讯控股、阿里巴巴等港股公司 2023-06-19 17:05:40 软控股份:公司产品的核心竞争力在于公司是全球唯一轮胎生产整体解决方案提供商,产品覆盖轮胎生产全工序 热点聚焦 2023-06-19 16:17:25 山东宁阳:公交车上建起“妈妈小屋” 环球信息 2023-06-19 15:50:03 光伏领域的压力容器:解决能源挑战的利器-全球新要闻 2023-06-19 15:23:13 环球微头条丨2023安徽淮南市高校毕业生“三支一扶”计划招募资格复审工作通知 2023-06-19 15:04:15 成都大运会比赛门票销售启动 最低票价30元 2023-06-19 14:34:51 方庄路 树枝遮挡指示牌难露“真容” 全球快报 2023-06-19 13:55:18 郑好融进入2.0时代,首个“科创金融服务港湾”揭牌亮相-世界微头条 2023-06-19 12:59:44 当前观点:2023西安小升初分班考试在什么时候 2023-06-19 12:27:10 2023年常州端午节活动汇总 2023-06-19 12:04:59 丹寨县乡村振兴指挥部2023年第9次会议暨“六大机制”调度会议召开 2023-06-19 11:22:24 焦点快播:南川:茶文化与旅游融合的新引擎 2023-06-19 11:07:59 【天天速看料】电脑锁定的快捷键怎么修改(电脑锁定的快捷键) 2023-06-19 09:16:08 高管等人挥霍了2亿元!惊天大骗局,已有6000人中招→ 2023-06-19 08:33:13 “中国最美公路”独库公路恢复通车_全球快资讯 2023-06-19 08:42:10 准备好了再相爱(六) 全球新视野 2023-06-18 22:01:52 Xinhua Headlines: From Taklimakan to Sahara, China, Africa in concert to combat drought 2023-06-18 21:16:50 什么是量子基金 量子基金是什么意思-资讯 2023-06-18 20:44:46