0
我有兩個方程描述了截斷高斯分佈的矩(均值和方差)。我內置下面的函數來計算它們:給出帶有兩個非線性方程的解的給定參數值R
trunc_moments <- function(moments, a, b){
require(truncnorm)
mu <- moments[1]
sigma <- moments[2]
alpha <- (a - mu)/sigma; beta <- (b - mu)/sigma
mu_trunc <- mu + sigma*
((dnorm(alpha, mu, sigma) - dnorm(beta, mu, sigma))/
(pnorm(beta, mu, sigma) - pnorm(alpha, mu, sigma)))
sigma_trunc <- sigma^2 * (1 +
((alpha*dnorm(alpha, mu, sigma) - beta*dnorm(beta, mu, sigma))
/(pnorm(beta, mu, sigma) - pnorm(alpha, mu, sigma))) -
((dnorm(alpha, mu, sigma) - dnorm(beta, mu, sigma))
/(pnorm(beta, mu, sigma) - pnorm(alpha, mu, sigma)))^2)
return(c(mu_trunc, sigma_trunc))
}
鑑於mu
和sigma
,該函數返回mu_trunc
和sigma_trunc
。現在
trunc_moments(c(0.25, 0.02), a=0, b=1)
,我想獲得相反的結果:給定功能,mu_trunc
和sigma_trunc
,我能獲得的mu
和sigma
值是多少?
我嘗試了一些nleqslv R包但我不確定這是我在找什麼。
library(nleqslv)
nleqslv(c(0.25, 0.0004), trunc_moments, a = 0, b = 1)$x
調用pf'trunc_moments'給出錯誤消息。它應該是:'trunc_moments(c(0.25,0.02),a = 0,b = 1)',因爲'trunc_moments'需要一個用於參數'moments'的向量。 – Bhas