浏览器大全网站,寿光做网站m0536,陕西科技网站建设,二手车为什么做网站文章目录介绍代码参考介绍
冰川湖溃决洪水#xff08;GLOF#xff09;是山区面临的一大灾害#xff0c;但关于其频率在近几十年内是否有所增加以及这种趋势与气候变化之间的关联程度#xff0c;仍存在相当大的不确定性。在此#xff0c;我们基于冰碛湖溃决洪水这一新视角…文章目录介绍代码参考介绍冰川湖溃决洪水GLOF是山区面临的一大灾害但关于其频率在近几十年内是否有所增加以及这种趋势与气候变化之间的关联程度仍存在相当大的不确定性。在此我们基于冰碛湖溃决洪水这一新视角对全球 1900 年至 2020 年期间的 609 起事件进行了分析。历史报告和地貌学证据提供的信息表明在 20 世纪 70 年代之前全球报告的 GLOF 频率呈现低但波动上升的趋势。然而自 20 世纪 80 年代以来这一趋势显著加速1981 年至 1990 年期间的年均 GLOF 数量为 5.2 起而 2011 年至 2020 年期间则上升至 15.2 起。总体而言报告的 GLOF 频率的长期趋势与全球气温的变化密切相关呈现出大约 20 年的滞后相关模式。我们引入了 GLOF 响应时间的概念来解释这种延迟反应这种反应归因于气候变暖导致的冰川退缩、冰川湖扩张以及此类湖泊周围的斜坡失稳最终引发了 GLOF。由冰碛湖堰塞形成的冰川湖溃决洪水GLOF是山区地区的一大安全隐患1。与之相关的连锁反应往往跨越数十至数百公里并导致深远的社会和地貌后果2,3。例如在 2023 年的锡金喜马拉雅地区南隆纳克 GLOF 造成 55 人死亡另有 74 人失踪并在下游超过 160 公里的范围内造成了严重破坏摧毁了约 30 座桥梁、2000 座建筑物和三个水电站45。全球范围内还有其他严重的 GLOF 现象已被详细记录包括在加拿大不列颠哥伦比亚省、秘鲁科尔迪拉布拉纳山脉以及巴塔哥尼亚安第斯山脉等地并且正受到越来越多的科学和政策关注10。GLOF 的发生通常与冰川退缩即冰川萎缩导致山谷坡面崩塌以及不稳定冰前沿的冰块滑入湖泊、永久冻土退化岩崩、滑坡和冰碛坝中死亡冰的融化以及极端天气事件极端降雨和融水事件有关而所有这些都因全球变暖而加剧111213。然而全球性冰川湖溃决洪水与气候变化之间的关联仍存在争议并且常常受到潜在遗漏和记录错误的影响14。对现有全球性冰川湖溃决洪水清单的分析迄今表明自 20 世纪 80 年代以来其发生频率在区域和全球范围内均出现了下降或停滞现象15、16、17这与人们直观的预期相矛盾即鉴于近期的强烈变暖18 以及冰川湖数量的增加19、20全球性冰川湖溃决洪水的发生本应有所增加。不断更新和修订的全球冰川湖溃决洪水GLOF清单对于解决这些差异至关重要。它们能够对 GLOF 的发生频率和与气候的关联进行分析并为更广泛的应用提供信息例如验证 GLOF 易发性评估的可靠性21、确定用于 GLOF 情景建模的湖泊22、23、24以及为 GLOF 风险缓解和政策制定提供信息25、26。可以使用两种方法构建精确的 GLOF 时间序列。第一种方法是汇集文献来源中报告的事件包括期刊论文、新闻报道和当地行政记录27。第二种方法结合了灾后地貌分析利用 GLOF 的痕迹如湖泊水位下降、堤坝溃决、冲积扇和下游破坏等来识别以前未报告的事件28、29。对来自不同来源的图像进行手动或计算机自动分析可以极大地丰富清单。喜马拉雅地区17、热带安第斯山脉7 和南安第斯山脉30 的研究表明仅依靠被动报告的信息会低估冰川湖溃决洪水的量 0.5 至 2 倍。因此构建全球冰川湖溃决洪水GLOF数据库需要持续更新已报告的事件并通过地貌评估主动识别未报告的历史性 GLOF。此外对于模糊的情况GLOF 的痕迹可以确认其可靠性31而像 Landsat 和 Sentinel 这样的广泛卫星图像档案则可用于进一步限定那些爆发时间窗口较大的事件的 GLOF 时间。最新的全球数据库版本 4.1包含了 1900 年至 2020 年间发生的 463 个冰碛湖溃决洪水事件32但仍需要在完整性、连续性和准确性方面进行改进。在这项研究中我们更新了关于冰碛坝型泥石流的全球统计信息从而能够对它们的分布、发生频率以及与气候的关系进行系统分析。我们采用了由数据集整合、爆发时间校准以及未报告泥石流的识别组成的三步框架见方法部分来提高数据集的质量并支持在不同空间和时间尺度上对泥石流特征进行可靠的评估。主要发现表明自 20 世纪以来泥石流的频率呈阶段性上升趋势这主要由全球变暖加剧所驱动。代码https://github.com/Taigang1/GLOF/blob/main/GAM.pyimportpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltfrompygamimportPoissonGAM,simportstatsmodels.apiassmimportstatsmodels.formula.apiassmffromscipyimportstats# 读取Excel文件file_pathH:\P20230801_Moraine-dammed lake outburst activities\GAM model\Trend.xlsx# 替换为你的文件路径datapd.read_excel(file_path)# 提取自变量和因变量yeardata[Year].values frequencydata[Frequency].values# 定义候选的自由度范围df_candidatesrange(3,15)# 可调控很重要确保 n_splines spline_order# 存储每个自由度对应的AIC值和交叉验证误差aic_values[]cv_errors[]smooth_term_p_values[]estimated_slopes[]fordfindf_candidates:print(df)try:# 拟合GAM模型spline_order是控制平滑项的多项式阶数的参数lam控制平滑度的参数gamPoissonGAM(s(0,n_splinesdf,spline_order2),lam0.1)gam.gridsearch(year[:,None],frequency)# 计算AICaic_values.append(gam.statistics_[AIC])# 交叉验证cv_errorgam.score(year[:,None],frequency)cv_errors.append(cv_error)# 获取光滑项的p值和斜率p_valuesgam.statistics_[p_values]slopesgam.coef_ smooth_term_p_values.append(p_values)estimated_slopes.append(slopes)exceptExceptionase:print(fError with df{df}:{e})# 选择最优的自由度best_df_aicdf_candidates[np.argmin(aic_values)]best_df_cvdf_candidates[np.argmax(cv_errors)]print(fBest df by AIC:{best_df_aic})print(fBest df by CV:{best_df_cv})# 选择最优自由度进行最终模型拟合例如选择交叉验证结果best_dfbest_df_cv# 拟合最终GAM模型gamPoissonGAM(s(0,n_splinesbest_df,spline_order2),lam0.1)gam.gridsearch(year[:,None],frequency)# 预测值和置信区间year_prednp.linspace(year.min(),year.max(),1000)# 增加样本点数拟合置信区间pred_meangam.predict(year_pred[:,None])# 计算置信区间confidence_intervalsgam.confidence_intervals(year_pred[:,None],width0.95)# 提取下限和上限lower_boundconfidence_intervals[:,0]upper_boundconfidence_intervals[:,1]# 获取统计指标估计自由度反映模型的复杂度和光滑程度。较高的edf表示模型更复杂p_valuesgam.statistics_[p_values]edfgam.statistics_[edof]aicgam.statistics_[AIC]deviancegam.statistics_[deviance]#较低的AIC值表示模型在平衡拟合优度和复杂度方面表现较好。# 计算χ²统计量较低的统计量表示拟合较好observedfrequency predictedgam.predict(year[:,None])chi2np.sum((observed-predicted)**2/predicted)# 计算平均斜率反映曲线整体趋势average_slopenp.mean(gam.coef_)# 使用 statsmodels 进行线性回归来计算斜率的显著性# 将数据准备为适合 statsmodels 的格式dfpd.DataFrame({year:year,frequency:frequency})modelsmf.poisson(frequency ~ year,datadf).fit()# 获取斜率的标准误差、t值和p值判断斜率是否显著avg_slope_std_errormodel.bse[year]avg_slope_t_valuemodel.tvalues[year]avg_slope_p_valuemodel.pvalues[year]# 输出评估指标print(fp-values:{p_values})print(fEstimated Degrees of Freedom (edf):{edf})print(fChi-squared statistic (χ²):{chi2})print(fAIC:{aic})print(fAverage Slope of Smooth Terms:{average_slope})print(fAverage Slope Standard Error:{avg_slope_std_error})print(fAverage Slope t-value:{avg_slope_t_value})print(fAverage Slope p-value:{avg_slope_p_value})# 输出光滑函数的p值和斜率print(fSmooth term p-values:{p_values})print(fEstimated slopes of smooth terms:{gam.coef_})# 将拟合曲线和不确定区间上下线的x和y坐标信息导出到Excel文件output_datapd.DataFrame({Year:year_pred,Fitted:pred_mean,Lower Bound (95%):lower_bound,Upper Bound (95%):upper_bound})output_file_pathH:\P20230801_Moraine-dammed lake outburst activities\GAM model\GAM_Fit_Results.xlsx# 替换为你想要的输出文件路径output_data.to_excel(output_file_path,indexFalse)# 将评估指标添加到Excel文件中withpd.ExcelWriter(output_file_path,modea,engineopenpyxl)aswriter:metrics_datapd.DataFrame({Metric:[p-values,Estimated Degrees of Freedom (edf),Chi-squared statistic,AIC,Average Slope,Average Slope Standard Error,Average Slope t-value,Average Slope p-value],Value:[p_values,edf,chi2,aic,average_slope,avg_slope_std_error,avg_slope_t_value,avg_slope_p_value]})metrics_data.to_excel(writer,sheet_nameMetrics,indexFalse)print(fResults saved to{output_file_path})# 绘图plt.figure(figsize(12,6))plt.plot(year,frequency,o,labelObserved)plt.plot(year_pred,pred_mean,r-,labelFitted)plt.fill_between(year_pred,lower_bound,upper_bound,colorr,alpha0.2,label95% CI)plt.xlabel(Year)plt.ylabel(Frequency of Glacier Lake Outburst Floods)plt.title(GAM Fit with Optimal df for Frequency of Glacier Lake Outburst Floods)plt.legend()plt.show()参考High frequency of moraine-dammed lake outburst floods driven by global warminghttps://github.com/Taigang1/GLOF/blob/main/