【问题标题】:Mathematical Issue in a Formula, Looking for direct mathematical function公式中的数学问题,寻找直接的数学函数
【发布时间】:2020-11-04 19:49:10
【问题描述】:

已知 x、p 和 s,我试图在 R 中解决这个问题:查找 N 例如 qnorm(p, N, s)=q

示例:查找N如30==qnorm(0.05, N, 3)

我的解决方案:

x<-seq(30, 50, 0.1)
y<-qnorm(0.05, x, 3)
plot(x,y)

看情节,解在 35 左右。 我可以按照这个试验方法细化答案。

我的问题是:有解决这个问题的直接函数吗?

【问题讨论】:

    标签: math plot formula calculation


    【解决方案1】:

    这里的关键是要意识到qnorm(0.05, N, 3)qnorm(0.05, 0, 3) + N 相同,因为mean 参数所做的只是将整个分布向左或向右移动。因此,如果我们将30 = qnorm(0.05, N, 3) 重新排列,我们会得到:

    N <- 30 - qnorm(0.05, 0, 3)
    
    N
    #> [1] 34.93456
    

    或者概括:

    inv.qnorm <- function(goal, sd, p) goal - qnorm(p, 0, sd)
    

    这为我们提供了比使用序列查找方法更高的精度、速度和内存使用率的答案。

    【讨论】:

      【解决方案2】:

      基本上我创建一个以目标为中心的均值向量,长度为2*standard_deviation*qnorm(1-p/2),然后获取该向量中与目标距离最小的元素并将其返回

      inv.qnorm <- function(goal, sd, p, precision=.0001){
        x <- seq(goal - sd* qnorm(1-p/2), goal + sd* qnorm(1-p/2), precision)
        x[which.min(abs(qnorm(p, x, sd)-goal))]
      }
      inv.qnorm(30, 3, .05)
      #> [1] 34.93461
      

      【讨论】:

        猜你喜欢
        • 2018-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-01
        • 2020-10-29
        • 2017-01-16
        相关资源
        最近更新 更多