首页 > 解决方案 > Integrate-Function R:match.fun(f) 中的错误

问题描述

用户,

在尝试计算 Kullback-Leibler-Divergence 时,我遇到了 R 的积分函数的问题;对于我试图重现的公式,请参见此处:https ://wikimedia.org/api/rest_v1/media/math/render/svg/526682a951093613fe4c721db57b68ec991bdf07

而不是“p(x)”和“q(x)”,我分别使用了“f.1”和“f.2”。

这是代码:

f.1 = function(x){
    dis.t = dt(x,df.1)
    return(dis.t)
    }
  f.2 = function(x){
    dis.norm = (1/sqrt(2*pi*sigma.sq))*exp(-((x-mu)^2)/2*sigma.sq)
    return(dis.norm)
    }
  test = function(x){
    kld = f.1(x)*log(f.1(x)/f.2(x))
    return(kld)

    }

  KLd = function(x){integrate(test(x),-Inf,Inf)}

它返回一个错误:“match.fun(f) 中的错误:'test(x)' 不是函数、字符或符号”;如果我使用“is.function(test)”,它返回“TRUE”。

感谢您在确定问题和解决方案方面的帮助;

附加信息:输入函数的 xi 是伪随机 t 分布样本:df.1 = 3 n = 25 rt(n, df.1)

f.2 函数就是正态分布的密度函数;

最好的问候艾琳

标签: rmatchintegrate

解决方案


推荐阅读