2012-08-27 6 views
2

Я хочу интерполировать кривую доходности с использованием модели Нельсона-Зигеля. Я новичок в языке R, но решил использовать пакет «Выходная кривая» (доступен здесь http://cran.r-project.org/web/packages/YieldCurve/index.html и ссылка на документацию: http://cran.r-project.org/web/packages/YieldCurve/YieldCurve.pdf) Есть две проблемы, с которыми я столкнулся:Выходная кривая пакета R

1) Не понимаю, почему первые 2 параметра из NSrates в 6-й и 7-й строке следующего кода (стр.6 в документации) принял этот формат:

data(FedYieldCurve) 
tau <- c(3, 6, 12, 60, 84, 120) 
mediumTerm <- c(12,60,84) 
NSParameters <- Nelson.Siegel(rate=FedYieldCurve[1:10,], 
           maturity=tau, MidTau=mediumTerm) 
y <- NSrates(NSParameters[5,1:3], 
      NSParameters$lambda[5],tau) 
plot(tau,FedYieldCurve[5,],main="Fitting Nelson-Siegel yield curve", type="o") 
lines(tau,y, col=2) 
legend("topleft",legend=c("observed yield curve","fitted yield curve"), 
col=c(1,2),lty=1) 
grid() 

2) как извлечь определенный выход из кривой? Например, если у меня есть срок погашения 12 месяцев, какова его соответствующая доходность ?.

Большое спасибо за то, что нашли время, чтобы ответить на мои вопросы.

ответ

4

Просмотрите страницу помощи для NSrates.

Он принимает 3 аргумента:

betaCoeff: вектор или матрица коэффициентов бета-версии в.

лямбда: значение оцененного лямбда

зрелости: зрелость кривой доходности которой хочет вернуть процентные ставки.

Для betaCeff, код вы показываете использует NSParameters[5, 1:3] или

beta_0 beta_1 beta_2 
5 13.7156 -1.468064 1.237194 

который является data.frame. Хотя data.frame четко не указана в качестве возможного вклада, то первая строка функции преобразует его в matrix (при условии, что вы используете версию CRAN)

if(is.vector(betaCoeff)) betaCoeff <- matrix(betaCoeff, 1, 3) 

Для lambdat, код вы показываете использует NSParameters$lambda[5], который значение numeric для использования для оценки лямбда.

Последний аргумент maturity. Код, который вы показали использует tau что

> tau 
[1] 3 6 12 60 84 120 

За документацию, функции

Возврата процентных ставок в матрице объекте с числом строк, равной nrow (betaCoeff) и числом столбцов, равной длина (зрелость).

В этом случае вы получите

> y 
      3  6  12  60  84  120 
[1,] 12.7394 13.05852 13.40245 13.6897 13.69721 13.70273 

Если вы хотите только 12 месяц maturity, а затем передать только 12 к maturity аргумента.

> NSrates(NSParameters[5,1:3], NSParameters$lambda[5], 12) 
      12 
[1,] 13.40245 
+0

Так в 'NSParameters [5, 1: 3]' мы в основном хотят значения бета-коэффициентов 3, но то, что делает первый индекс ([5,) в нем относится к?И для 'NSParameters $ lambda [5]' Я понимаю из вашего ответа, что это значение лямбда, но я не понимаю, что означает вход 'x' в' NSParameters $ lambda [x] '. – valid90

+1

'NSParameters' является' data.frame' с 10 строками. 'NSParameters [5,]' означает использовать только 5-ю строку data.frame. 'lambda' - это столбец' data.frame' 'NSParameters'. Итак, 'NSParameters $ lamda' - это вектор из 10 значений. 'NSParameters $ lamda [5]' - это только 5-й элемент этого вектора и эквивалентен 'NSParameters [5," lambda "]'. См. [Введение в R] (http://cran.r-project.org/doc/manuals/R-intro.pdf) для получения информации об основном подмножестве. – GSee

+0

Благодарим вас за ответ на GSee. У меня нет проблем с пониманием подмножества данных здесь. Проблема в том, что я не знаю, о чем относятся строки и столбцы. Например, автор использовал здесь 'FedYieldCurve [1:10,]', но что представляет собой компонент '[x, y]'? Имеет ли x значение доходности и y сроков погашения? То же самое для 'NSParameters [5,1: 3]', видно, что ', 1: 3]' означает, что мы выбираем первые три столбца кадра данных, но как насчет '[5,'? Зачем выбирать 5-ю строчку? И что он представляет? Я много искал об этой проблеме, но, к сожалению, у меня нет никаких результатов. – valid90

Смежные вопросы