我正在从一本名为“使用R发现统计数据”的书中学习统计数据和R ...尽管它提供了非常丰富的信息,但它似乎跳过了区域,即使它表明不需要先前的统计知识或R。所以问题是:
如何使用Dichotomy(或分为两半)方法在R中计算标准正态分布的第p个分位数? (并假设不使用qnorm()
)。那就是:
pnorm(x) = p
pnorm(x)-p = 0
f (x) = 0
更新
二分法是一种采用间隔[a,b]
的方法,它取值不同
在区间的终点处签名,并在x
内有一个根[a,b]
。然后你找到F(x1)
的一半,如果f(x1) != 0
它会给你[a,x1]
和[x1,b]
...其中序列x1, x2,...,
收敛到0
}。
答案 0 :(得分:1)
笨拙,但这很有效:
tolerance <- 1e-6
interval <- c(-1000,1000)
quantile <- 0.2
while(interval[2]-interval[1] > tolerance) {
cat('current interval: ',interval,'\n')
interval.left <- c(interval[1],mean(interval))
interval.right <- c(mean(interval),interval[2])
if(sum(sign(pnorm(interval.left)-quantile))==0) {
interval <- interval.left
} else {
interval <- interval.right
}
}
mean(interval)
qnorm(quantile)