【问题标题】:Writing a double sum as a function in R在 R 中将双数和作为函数编写
【发布时间】:2019-12-15 08:24:03
【问题描述】:

我正在尝试编写一个双重求和函数,如附图中的公式所示。 我正在尝试将总和写为 β(????)

的函数

这是我的尝试:

n0=10
lambda=0.5
n=50
alpha=0.05

f <- function(j,s,delta) {choose(n0,j)*choose(n-n0-1,s-1-j)*lambda^j*(1-lambda)^(n0-j)*(pnorm(delta-qnorm(1-lambda)))^(s-1-j)*(1-pnorm(delta-qnorm(1-lambda)))^(n-n0-s+j)}
g <- function(s,delta) {pnorm(delta-qnorm(alpha*(1-lambda)/(n-s+1)))*sum(sapply(0:s-1,f,s))}
sum(sapply(1:50,g))

我不知道该怎么做。

当我计算总和不是作为函数(没有增量)时:

f <- function(j,s) {choose(n0,j)*choose(n-n0-1,s-1-j)*lambda^j*(1-lambda)^(10-j)*(pnorm(qnorm(1-lambda)))^(s-1-j)*(1-pnorm(qnorm(1-lambda)))^(n-n0-s+j)}

g <- function(s) {pnorm(qnorm(alpha*(1-lambda)/(n-s+1)))*sum(sapply(0:s-1,f,s))}
sum(sapply(1:50,g))

一切正常

任何帮助将不胜感激!

【问题讨论】:

    标签: r


    【解决方案1】:

    g 函数的定义中,您需要将delta 作为显式参数传递给sum(sapply(0:s-1,f,s)) 位:

    sum(sapply(0:s-1,f,s, delta))

    所以:

    g <- function(s,delta) {pnorm(delta-qnorm(alpha*(1-lambda)/(n-s+1)))*sum(sapply(0:s-1,f,s,delta))}
    

    然后您可以通过将所需的增量传递给它来计算总和:

    delta <- 0.1
    sum(sapply(1:50,g, delta))
    

    另外,请注意您的1-lambda 电源表达式中有一个10-j f - 那应该是n0 - j

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多