R 用一些数据拟合正态分布,得到概率

R 用一些数据拟合正态分布,得到概率,r,distribution,R,Distribution,我得到了这些数据,我需要拟合一个正态分布,以得到另一组与发生概率相关的数据 data = c(150,94.1,127.6,77.2,136.1,83.4,75.6,92.7,106.5,95.9,112.1,90.4,143.7,152.7,113.3,143.9,87.9,85.2,117.2,193,153.7,84.7,97.3,140.3,80,103.6,72.6,90.7,52.6,52.8) 然后是发生的概率: returntime = c(1.02,1.5,2,3,4,5,6

我得到了这些数据,我需要拟合一个正态分布,以得到另一组与发生概率相关的数据

data = c(150,94.1,127.6,77.2,136.1,83.4,75.6,92.7,106.5,95.9,112.1,90.4,143.7,152.7,113.3,143.9,87.9,85.2,117.2,193,153.7,84.7,97.3,140.3,80,103.6,72.6,90.7,52.6,52.8)
然后是发生的概率:

returntime = c(1.02,1.5,2,3,4,5,6,7,8,9,10,15,20,25,30,50,100,200,500,1000,5000,10000) #years
prob_returntime = 1/returntime #need to get the data associated with this prob.
我试图使用qnorm(),但我认为我做错了什么

预期产出:


如果您想找到对应于
数据的正态分布分位数,但对于
1-prob\u returntime
的值,我们可以执行以下操作

代码

# Estimate mean and standard deviation from your data
mu <- mean(data)
std <- sd(data)

# then use qnorm to get quantiles of data associated with return prob

data.frame("return_time" = returntime, "probability" = 1/returntime,
           "data value" = qnorm(1 - (1 / returntime), mu, std))
   

#    return_time probability data.value
# 1         1.02  0.98039216   38.94683
# 2         1.50  0.66666667   92.69954
# 3         2.00  0.50000000  106.89333 
# 4         3.00  0.33333333  121.08712
# 5         4.00  0.25000000  129.11985
# 6         5.00  0.20000000  134.62735
# 7         6.00  0.16666667  138.77285
# 8         7.00  0.14285714  142.07307
# 9         8.00  0.12500000  144.80089
# 10        9.00  0.11111111  147.11719
# 11       10.00  0.10000000  149.12440
# 12       15.00  0.06666667  156.35874
# 13       20.00  0.05000000  161.09633
# 14       25.00  0.04000000  164.58383
# 15       30.00  0.03333333  167.32647
# 16       50.00  0.02000000  174.57069
# 17      100.00  0.01000000  183.55366
# 18      200.00  0.00500000  191.77484
# 19      500.00  0.00200000  201.73763
# 20     1000.00  0.00100000  208.72601
# 21     5000.00  0.00020000  223.55000
# 22    10000.00  0.00010000  229.44638

#估计数据的平均值和标准偏差

mu如果您想找到对应于
数据的正态分布分位数,但对于
1-prob_returntime
的值,我们可以执行以下操作

代码

# Estimate mean and standard deviation from your data
mu <- mean(data)
std <- sd(data)

# then use qnorm to get quantiles of data associated with return prob

data.frame("return_time" = returntime, "probability" = 1/returntime,
           "data value" = qnorm(1 - (1 / returntime), mu, std))
   

#    return_time probability data.value
# 1         1.02  0.98039216   38.94683
# 2         1.50  0.66666667   92.69954
# 3         2.00  0.50000000  106.89333 
# 4         3.00  0.33333333  121.08712
# 5         4.00  0.25000000  129.11985
# 6         5.00  0.20000000  134.62735
# 7         6.00  0.16666667  138.77285
# 8         7.00  0.14285714  142.07307
# 9         8.00  0.12500000  144.80089
# 10        9.00  0.11111111  147.11719
# 11       10.00  0.10000000  149.12440
# 12       15.00  0.06666667  156.35874
# 13       20.00  0.05000000  161.09633
# 14       25.00  0.04000000  164.58383
# 15       30.00  0.03333333  167.32647
# 16       50.00  0.02000000  174.57069
# 17      100.00  0.01000000  183.55366
# 18      200.00  0.00500000  191.77484
# 19      500.00  0.00200000  201.73763
# 20     1000.00  0.00100000  208.72601
# 21     5000.00  0.00020000  223.55000
# 22    10000.00  0.00010000  229.44638

#估计数据的平均值和标准偏差


我不太清楚你在问什么。您首先写下您正在寻找概率,然后还声明您想要使用一个
分位数
函数,它是累积分布函数的逆函数。请将预期输出添加到您的问题。嘿,我做了编辑。请看一看。但是是的,我需要cdf的倒数@你想找出降雨和“返程时间”(不管是什么)之间的联系吗?现在还不清楚你想在这里做什么,你可能会通过预先声明它涉及正态分布的分位数而把自己(和其他人)引向悬崖。好吧,我一直在看你的数据,这对我来说毫无意义。首先,你没有试图根据rt或rt反演来预测降雨,因为你有30个观测值和22个rt值。其次,你究竟如何看待时间反演(在你的评论中以年为单位)作为一种概率?引用Ricky Ricardo对Lucille Ball说的话,“Lucy,你有一些事情要做!”也许可以帮助你解释一下这里所做的工作,作为对情况的介绍。我不太清楚你在问什么。您首先写下您正在寻找概率,然后还声明您想要使用一个
分位数
函数,它是累积分布函数的逆函数。请将预期输出添加到您的问题。嘿,我做了编辑。请看一看。但是是的,我需要cdf的倒数@你想找出降雨和“返程时间”(不管是什么)之间的联系吗?现在还不清楚你想在这里做什么,你可能会通过预先声明它涉及正态分布的分位数而把自己(和其他人)引向悬崖。好吧,我一直在看你的数据,这对我来说毫无意义。首先,你没有试图根据rt或rt反演来预测降雨,因为你有30个观测值和22个rt值。其次,你究竟如何看待时间反演(在你的评论中以年为单位)作为一种概率?引用Ricky Ricardo对Lucille Ball说的错误话,“Lucy,你有一些事情要做!”也许可以帮助解释更多关于这里所做工作的介绍,以解释这种情况。是的,但有些事情是错误的,因为数据价值越高,回报时间越长。数据对应于降雨量(mm),我们在这里看到的分位数对应于概率(1/返回时间)。高概率产生高值。本质上,我们是在问数据是否是正态分布的,数据的
mean()
sd()
值是多少,98%的数据将小于或等于该值。因此,高概率值产生的分位数远位于平均值的右侧。在excel中,这是由(平均值+(Z*sd))得出的。你能把这个操作和R中的某个函数联系起来吗?@Bryan Souza什么是
Z
?我找到了答案。我们需要使用(1-prob)来实现这一点。谢谢你的帮助!是的,但有点不对劲,因为数据值越高,返回时间越长。数据对应于降雨量(mm),我们在这里看到的分位数对应于概率(1/返回时间)。高概率产生高值。本质上,我们是在问数据是否是正态分布的,数据的
mean()
sd()
值是多少,98%的数据将小于或等于该值。因此,高概率值产生的分位数远位于平均值的右侧。在excel中,这是由(平均值+(Z*sd))得出的。你能把这个操作和R中的某个函数联系起来吗?@Bryan Souza什么是
Z
?我找到了答案。我们需要使用(1-prob)来实现这一点。谢谢你的帮助!