【问题标题】:get probabilities using some data to fit normal distribution with R使用一些数据获得概率以用 R 拟合正态分布
【发布时间】:2021-03-23 18:02:28
【问题描述】:

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

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(),但我认为我做错了什么......

预期输出:

【问题讨论】:

  • 我不太清楚你在问什么。您首先写下您正在寻找概率,然后您还声明您想使用一个quantile 函数,它是累积分布函数的。请将预期的输出添加到您的问题中。
  • 嘿,我进行了编辑。请看一下。但是,是的,我需要 cdf 的倒数。 @Base_R_Best_R
  • 您是否试图找到降雨量和“返回时间”(无论是什么)之间的关联?完全不清楚您在这里要做什么,并且您可能会通过预先声明它涉及正态分布的分位数而将自己(和其他所有人)带入悬崖。
  • 好的,我一直在查看您的数据,但对我来说没有意义。首先,您不是试图根据 rt 或 rt-inverse 预测降雨量,因为您有 30 个观测值和 22 个 rt 值。其次,您究竟如何将时间的倒数(在您的 cmets 中以年衡量)视为概率?错误地引用 Ricky Ricardo 与 Lucille Ball 的谈话,“Lucy,你有事要做!”
  • 也许可以帮助解释一下这里所做的工作,作为解释情况的介绍。

标签: r distribution


【解决方案1】:

如果您想找到与data 对应的正态分布的分位数,但对于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

【讨论】:

  • 是的,但是有些问题,因为数据值越高,return_time 越大。数据对应于降雨量(毫米)
  • 我们这里看的分位数对应的是概率(1/returntime)。高概率产生高价值。本质上,我们是在询问数据是否与 datamean()sd() 正态分布,98% 的数据会小于或等于该值的值是多少。因此,高概率值会产生远离均值右侧的分位数。
  • 在 excel 中这是由 (mean + (Z * sd)) 制作的。你能把这个操作与 R 中的某个函数联系起来吗?
  • @Bryan Souza Z 是什么?
  • 我找到了答案。我们需要使用 (1 - prob) 来做到这一点。谢谢你的帮助!
猜你喜欢
  • 1970-01-01
  • 2018-12-23
  • 2020-02-24
  • 2016-02-03
  • 1970-01-01
  • 2021-03-13
  • 1970-01-01
  • 2018-11-15
  • 2017-02-03
相关资源
最近更新 更多