#求帮助#利用皮尔逊分布(Johnson Distribution)、蒙特卡洛模拟进行基于历史降雨特征下的随机降雨序列模拟
原文详细的操作可参考以下链接中的论文及其附件
链接:https://pan.baidu.com/s/18AfnZ6EDf_Q0EHxvVKHpuQ?pwd=73r3
提取码:73r3
以下是整理得到的简单过程:
1.下面是253个经过双变量无量纲化处理后的降雨序列,第一列是降雨事件的编号,编号后的一整行为降雨事件的降雨序列
转换结果如下表所示。
确定其正交变换矩阵T,
然后将交叉相关的标准正态随机变量W变换为不相关的自独立标准正态变量W'
最后利用下式,通过线性变换,得到指定的无量纲降雨质量曲线
等式中的约翰逊变换,通过F的逆,可以得到多元非正态随机变量
其次,通过函数(i=1、2,4,..,K),得到了样本的多元非正态随机变量y(=y1、..,yK,除y3)(表A9)。
基于历史数据特征,基于约翰逊分布、蒙特卡洛模拟、求逆过程等模拟得到的结果如下:
这里测试的数据可以由以下链接下载
链接:https://pan.baidu.com/s/1U0DZXiH0MbIIdbq6cvQxdA?pwd=j513
提取码:j513
可以参考下
Numpy
Pandas
Matplotlib
Seaborn
def find_average_monthly_AT_or_Humidity(what_for):
avg_data_tempreature_monthly = {}
for year in range(2006,2017):
for month in range(1,13):
result = list(new_data.loc[(new_data['month'] == month)&(new_data['year']==year) , :][what_for].values)
if month not in avg_data_tempreature_monthly:
avg_data_tempreature_monthly[month] = [np.mean(result)]
else:
avg_data_tempreature_monthly[month].append(np.mean(result))
return avg_data_tempreature_monthly
resampled_data = new_data.resample('M').mean()
# resample accroading to Month end ('M')
resampled_data['month'] = resampled_data.index.month
resampled_data['year'] = resampled_data.index.year
sns.barplot(H['year'] , H[4])
plt.title('Humidity For April Month')
plt.show()
sns.barplot(AT['year'] , AT[4])
plt.title('Apparent Temperature For April Month')
plt.show()
plt.plot(range(2006,2017),AT_monthly_average[4] , label = 'Apparent Temperature(C)' , color = 'red')
plt.plot(range(2006,2017),Humidity_monthly_average[4] , label = 'Humidity')
plt.legend()
plt.title('Apparent Temperature vs Humidity for April Month')
plt.show()
import numpy as np
from scipy.stats import johnsonsu
# Load historical rainfall data into a NumPy array
rainfall_data = np.array([10.2, 12.5, 9.8, 15.3, 11.6, 8.9, 14.2, 13.1, 10.7, 16.4, 12.8, 9.5])
# Fit the Pearson distribution to the data
params = johnsonsu.fit(rainfall_data)
# Generate a large number of simulated rainfall values
num_samples = 1000
simulated_rainfall = johnsonsu.rvs(*params, size=num_samples)
# Generate a random rainfall sequence based on the simulated values
random_rainfall = np.random.choice(simulated_rainfall, size=len(rainfall_dat
你这已经有实现步骤了,可以使用Python中的Scipy和Numpy库进行分布拟合和蒙特卡罗模拟,并使用Matplotlib库绘制降雨序列的图形。
这个问题 没有半天时间搞不出来
你不是都已经得到图了吗?还需要我们做什么工作?
联系一下论文作者试试,如果能联系上,找原作者要,是最省事、最准确的
看你这个是论文中的算法啊,一般论文作者会公开实验程序的呀。你联系下作者看下能否索要到程序的代码,然后你在这个的基础上,加上你的数据。不然需要完全读懂你的论文有点难。具体的工具的话,可以使用python或者matlab来实现皮尔逊分布(Johnson Distribution)、蒙特卡洛模拟