首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的Lebesgue-Stieltjes积分

R中的Lebesgue-Stieltjes积分
EN

Stack Overflow用户
提问于 2015-08-05 23:30:59
回答 1查看 192关注 0票数 2

我用数值计算了分布函数。First I绘制函数。似乎在0.05左右就错了。请问这是因为四舍五入的错误吗?

第二,我需要找到相应的第一和第二非中心时刻。那是,

X= int (X)

x^2 = int x^2 dF(x)

我可以在R中进行这种类型的Lebesgue-Stieltjes集成吗?请问有内置的方法吗?如果没有在R,请提供这样的计算软件包?

或者,我可以找到f(x)的数值微分,然后进行通常的积分

X= int x f(x) dx

但我记得在某个地方,数值微分的稳定性要差得多。请问哪条路是对的?

我的职能附在下面。

代码语言:javascript
复制
library(mvtnorm)
library(matrixcalc) 

VAR <- matrix(c(1.043856e-03, 5.044899e-04, 3.239951e-04, 2.330992e-04, 0.0001779055, 0.0001403866, 0.0001127118, 9.074962e-05, 7.157144e-05,
                5.044899e-04, 5.485889e-04, 3.523165e-04, 2.534751e-04, 0.0001934568, 0.0001526582, 0.0001225642, 9.868232e-05, 7.782773e-05,
                3.239951e-04, 3.523165e-04, 3.878844e-04, 2.790645e-04, 0.0002129870, 0.0001680697, 0.0001349376, 1.086447e-04, 8.568475e-05,
                2.330992e-04, 2.534751e-04, 2.790645e-04, 3.123147e-04, 0.0002383642, 0.0001880950, 0.0001510153, 1.215896e-04, 9.589399e-05,
                1.779055e-04, 1.934568e-04, 2.129870e-04, 2.383642e-04, 0.0002728857, 0.0002153361, 0.0001728863, 1.391990e-04, 1.097820e-04,
                1.403866e-04, 1.526582e-04, 1.680697e-04, 1.880950e-04, 0.0002153361, 0.0002548851, 0.0002046389, 1.647645e-04, 1.299447e-04,
                1.127118e-04, 1.225642e-04, 1.349376e-04, 1.510153e-04, 0.0001728863, 0.0002046389, 0.0002555744, 2.057751e-04, 1.622886e-04,
                9.074962e-05, 9.868232e-05, 1.086447e-04, 1.215896e-04, 0.0001391990, 0.0001647645, 0.0002057751, 2.840218e-04, 2.239993e-04,
                7.157144e-05, 7.782773e-05, 8.568475e-05, 9.589399e-05, 0.0001097820, 0.0001299447, 0.0001622886, 2.239993e-04, 3.974881e-04),
              nrow=9, ncol=9, byrow=TRUE)

is.symmetric.matrix(VAR)
is.positive.definite(VAR)
kappa(VAR)

CDF <- function(x){
  summand <- rep(0, 5)

  for(j in 5:9){
    choice <- combn(9, j)
    for(i in 1:ncol(choice)){
      ub <- rep(Inf, 9)
      ub[choice[, i]] <- x
      summand[j-4] <- summand[j-4] + as.numeric(pmvnorm(lower=rep(-Inf, 9), upper=ub, sigma=VAR))
    }
  }

  l <- c(1, -5, 15, -35, 70)
  as.numeric(t(l)%*%summand)
}

CDF <- Vectorize(CDF)

x <- seq(-0.1, 0.1, by=0.01)
y <- CDF(x)

plot(x, y, type="l", lwd=2)
EN

回答 1

Stack Overflow用户

发布于 2015-08-06 01:15:19

最初,我列出了从numCDF <- CDF( seq(-10, 10, length=100) )获取第一个差异的结果,但这是相当令人失望的,因为只有一个值与0不同。所以我把重点限制在:

代码语言:javascript
复制
 numCDF <- CDF( seq(-.10, .10, length=100) )
 plot( diff(numCDF) )

简单地绘制numCDF的值会在您表示关注的区域产生类似的混乱结果。

所以我想也许你的功能表现不够好,不能产生好的效果。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31844481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档