R의 Excel에서 RATE에 해당하는 값을 계산하는 방법은 무엇입니까?

R의 Excel에서 RATE에 해당하는 값을 계산하는 방법은 무엇입니까?

상환 기간과 대출 기간이 주어지면 대출 이자율을 계산하고 싶습니다.

Excel에서는 RATE 함수를 사용할 수 있지만 R에서는 무엇을 사용해야 할지 잘 모르겠고 관심 공식에 "r"이 너무 자주 포함되어 인터넷 검색이 어렵습니다. FinCal 패키지를 살펴봤지만 이에 상응하는 것은 없습니다.

누군가 다음과 동등한 올바른 공식을 알려줄 수 있습니까?

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

답변1

확인한 결과 RATEExcel의 함수는 내부 수익률, 특히 연금에 대한 함수입니다.

R에서는 이에 접근하는 방법이 여러 가지가 있습니다.

uniroot바닐라 R에서는 및 함수를 모두 polyroot사용하여 비율을 계산할 수 있지만 약간의 조작이 필요합니다.

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. 또는 폴리루트를 사용할 수 있지만 0과 1 사이에 있는 실제 근을 찾아야 합니다(다음에서는 i 대신 1+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. 기본적으로 RATE와 동일한 작업을 수행하는 것이 맞습니다 FinCal::discount.rate. 하지만 제가 볼 수 있는 한 도움말에서도 아무 말도 하지 않고 모든 비율을 유효 숫자 세 자리로 반올림하는 것처럼 보입니다. 정확도가 더 중요하다면 문제가 될 수 있습니다.

(정확도를 높이기 위한 대안은 해당 discount.rate함수의 출력을 취하여 Newton-Raphson의 한 단계를 수행하는 것인데, 이는 훨씬 더 나은 성능을 발휘합니다.)

관련 정보