如何用R求解两个符号方程的正态CDF(pnorm)。

问题描述 投票:2回答:1

我想用R对这两个方程进行数值解。

公式1:pnorm((c2+1)5)-pnorm((c1+1)5)=0.025。

公式2:pnorm((c2-1)5)-pnorm((c1-1)5)=0.025。

我需要找到c1和c2的值。

我试着用rSymPy和Ryacas,但实际上想不出来怎么做。

我尝试的R代码

解([Eq(pnorm((c2+1)5)-pnorm((c1+1)5),0.025),Eq(pnorm((c2-1)5)-pnorm((c1-1)5),0.02)]。

r normal-distribution cdf
1个回答
3
投票

你看过R中的包'nlqslv'吗?使用它,你可以很容易地得到一个解决方案。Solve不会工作,因为你有一个非线性方程系统,不能用矩阵表示。请看下面的问题。

library(nleqslv)


eqs_fun <- function(x) {
  y = numeric(2)
  y[1] = pnorm(q = (x[2]+1)/5) - pnorm(q = (x[1]+1)/5) - .025
  y[2] = pnorm(q = (x[2]-1)/5) - pnorm(q = (x[1]-1)/5) - .025
  y
}

xstart = c(0,1)
nleqslv(xstart, eqs_fun)

运行这个应该能得到以下结果

list(x = c(-0.159856055122849, 0.159854416799285), fvec = c(1.006390991376e-09, 
-6.31374431903087e-10), termcd = 1L, message = "Function criterion near zero", 
    scalex = c(1, 1), nfcnt = 8L, njcnt = 1L, iter = 6L)

你可以自己验证c1=-.16,c2=0.16 会给你一个解决方案!

© www.soinside.com 2019 - 2024. All rights reserved.