Wie berechnet man das Äquivalent von RATE in Excel in R?

Wie berechnet man das Äquivalent von RATE in Excel in R?

Bei einer gegebenen Rückzahlung und der Kreditlaufzeit möchte ich den Zinssatz für einen Kredit berechnen können.

In Excel kann ich die RATE-Funktion verwenden, bin mir aber nicht sicher, was ich in R verwenden soll, und das Googeln ist schwierig, da „r“ so häufig in Zinsformeln vorkommt. Ich habe das FinCal-Paket durchgesehen, aber nichts ist äquivalent.

Kann mir jemand die richtige Formel zeigen, die das Äquivalent zu Folgendem bewirkt:

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

Antwort1

Nach der Überprüfung stellt die RATEFunktion in Excel den internen Zinsfuß dar, und zwar einen für eine Annuität.

Es gibt mehrere Möglichkeiten, dies in R anzugehen.

Im Standard-R können sowohl die uniroot- als auch die polyroot-Funktionen zum Berechnen der Rate verwendet werden, aber dazu ist ein wenig Herumprobieren erforderlich:

Beachten Sie in Excel Folgendes:

=RATE(10,-100,800)

was den Wert ergibt:

4.2775%

Jetzt in R:

  1. Sie können eine Funktion schreiben, die Uniroot zur Verfügung gestellt wird:

    > 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. Alternativ können Sie Polyroot verwenden, müssen dazu aber die echte Wurzel zwischen 0 und 1 finden (im Folgenden verwende ich 1+i statt i, weil das einfacher ist und ich daher die Wurzel zwischen 1 und 2 brauche):

    > 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  
    

    Wobei die zweite Zeile die reellen Wurzeln der Polynomgleichung in Bezug auf (1+i) extrahiert und die gewünschte Wurzel größer als 1 (1,0427750) ist, von der Sie 1 abziehen.

  3. Sie können für dieses Problem auch allgemeinere interne Zinsfußfunktionen verwenden, indem Sie den Vektor der Cashflows bereitstellen, die der Annuität entsprechen.

  4. Sie haben Recht, dass es FinCal::discount.rateim Wesentlichen dasselbe tut wie RATE, aber es sieht so aus, als würde es alle seine Raten auf drei signifikante Stellen aufrunden, ohne etwas darüber zu sagen, nicht einmal in der Hilfe, soweit ich sehen kann. Wenn Ihnen eine höhere Genauigkeit wichtig ist, könnte das ein Problem sein.

(Eine Alternative für mehr Genauigkeit besteht darin, die Ausgabe dieser discount.rateFunktion zu nehmen und einen Schritt von Newton-Raphson zu verwenden, was ein viel besseres Ergebnis liefern sollte.)

verwandte Informationen