如何在R中計算Excel中RATE的等價物?

如何在R中計算Excel中RATE的等價物?

給定還款和貸款期限,我希望能夠計算貸款利率。

在 Excel 中,我可以使用 RATE 函數,但我不確定在 R 中使用什麼,而且谷歌搜尋很困難,因為「r」經常包含在利息公式中。我瀏覽了 FinCal 套餐,但沒有任何東西可以與之媲美。

有人可以指出我正確的公式,其作用相當於:

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

答案1

經過檢查,RATEExcel 中的函數是內部報酬率,特別是年金的函數。

在 R 中,有多種方法可以解決這個問題。

在普通 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並採取牛頓-拉夫森一步,這應該會做得更好。)

相關內容