如何在 R 中计算 Excel 中 RATE 的等值?

如何在 R 中计算 Excel 中 RATE 的等值?

给定还款额和贷款期限,我希望能够计算贷款利率。

在 Excel 中,我可以使用 RATE 函数,但我不知道在 R 中该使用什么,而且谷歌搜索很困难,因为“r”经常出现在利息公式中。我查看了 FinCal 软件包,但没有找到与之相当的。

有人可以指出我正确的公式,它的作用相当于:

 = RATE(12,-500,3000)
 = 13%

答案1

经检查,RATEExcel中的函数是内部收益率,具体来说是年金的内部收益率。

在 R 中有多种方法可以解决这个问题。

在 vanilla R 中,unirootpolyroot函数均可用于求解速率,但需要进行一些调整:

在 Excel 中考虑以下情况:

=RATE(10,-100,800)

产生的值是:

4.2775%

现在在 R 中:

  1. 您可以编写一个函数来提供给 uniroot:

    > f <- function(i,n,a) a - (1-(1+i)^(-n))/i
    > uniroot(f, interval=c(1e-9,1), 10, 800/100, tol=1e-6)$root
    [1] 0.04277498
    
  2. 或者,您可以使用 polyroot,但您需要找到介于 0 和 1 之间的实数根(下面我使用 1+i 而不是 i,因为它更简单,因此需要介于 1 和 2 之间的根):

    > res <- polyroot( c(1, rep(0,10-1), -(800/100+1), 800/100) )  
    > Re(res)[ abs(Im(res))<1e-9 ]  
    -0.7622679  1.0000000  1.0427750  
    

    第二行是根据 (1 + i) 提取多项式方程的实数根,而您想要的是大于 1 (1.0427750) 的实数根,然后从中减去 1。

  3. 您还可以使用更通用的内部收益率函数来解决此问题,通过提供与年金相对应的现金流向量。

  4. 您说得对,它的FinCal::discount.rate作用与 RATE 基本相同,但它似乎将所有利率四舍五入为三位有效数字,而没有对此做任何说明,就我所见,帮助中也没有说明。如果您在意更高的准确度,那么这可能是一个问题。

(为了获得更高的准确性,另一种方法是取该函数的输出discount.rate并采取牛顿-拉夫森一步法,这样效果会更好。)

相关内容