Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 二项分布中概率计算时的NaN值_R - Fatal编程技术网

R 二项分布中概率计算时的NaN值

R 二项分布中概率计算时的NaN值,r,R,我想计算以下函数的积分 riskFunction <- function(theta, n, r, s) { risk <- 0 for (j in 1:n) { risk <- risk + abs(theta - r * j - s) * dbinom(j, n, theta) } return(risk) } 出现50多个错误:在

我想计算以下函数的积分

riskFunction <- function(theta, n, r, s)
    {
        risk <- 0
        for (j in 1:n)
            {
               risk <- risk + abs(theta - r * j - s) * dbinom(j, n, theta)
            }
        return(risk)
    }
出现50多个错误:在dbinom(j,100,θ)中:NaN产生了


我不知道可能出了什么问题。如果有任何提示或提示,我将不胜感激。

dbinom(x,size,prob,log=FALSE)
具有
prob
外部
[0,1]
时会出现警告。在您的例子中,
theta=-0.01
之所以发生,是因为循环没有按预期运行

二进制运算符
的优先级高于二进制运算符
-
。因此,例如
1:5-1
被评估为
(1:5)-1
,而不是
1:(5-1)
。你想要

trapeizodalMethod <- function(a, b, m, n, r, s)
{
  intValue <- 0
  h <- (b - a)/m
  for (i in 0:(m-1)) {
            # ^^^^^  
    intValue <- intValue + 0.5 * (riskFunction(a + i * h, n=n, r=r, s=s) + riskFunction(a + (i + 1) * h, n=n, r=r, s=s)) * h
  }
  return(intValue)
}

trapeizodalMethod当
dbinom(x,size,prob,log=FALSE)
具有
prob
外部
[0,1]
时出现警告。在您的例子中,
theta=-0.01
之所以发生,是因为循环没有按预期运行

二进制运算符
的优先级高于二进制运算符
-
。因此,例如
1:5-1
被评估为
(1:5)-1
,而不是
1:(5-1)
。你想要

trapeizodalMethod <- function(a, b, m, n, r, s)
{
  intValue <- 0
  h <- (b - a)/m
  for (i in 0:(m-1)) {
            # ^^^^^  
    intValue <- intValue + 0.5 * (riskFunction(a + i * h, n=n, r=r, s=s) + riskFunction(a + (i + 1) * h, n=n, r=r, s=s)) * h
  }
  return(intValue)
}

trapeizodalMethod您的代码不完整:您没有向我们显示您传递给
trapeizodalMethod
的参数。但是在任何情况下,
risk函数
代码看起来都是错误的:它计算了大量
j
值的
risk
,但只保存最后一个值,没有任何返回值。@user2554330很抱歉,我修复了这些错误。但是它们只是打字错误。您的代码不完整:您没有向我们显示您传递给
trapeizodalMethod
的参数。但是在任何情况下,
risk函数
代码看起来都是错误的:它计算了大量
j
值的
risk
,但只保存最后一个值,没有任何返回值。@user2554330很抱歉,我修复了这些错误。然而,它们只是打字错误。
trapeizodalMethod <- function(a, b, m, n, r, s)
{
  intValue <- 0
  h <- (b - a)/m
  for (i in 0:(m-1)) {
            # ^^^^^  
    intValue <- intValue + 0.5 * (riskFunction(a + i * h, n=n, r=r, s=s) + riskFunction(a + (i + 1) * h, n=n, r=r, s=s)) * h
  }
  return(intValue)
}