2016-04-15 7 views
0

У меня есть 1 data.frame следующим образом, каждая строка представляет собой различные данные изображения:применяются с использованием значений каждой строки в data.frame в качестве параметров в R

Teste=data.frame(matrix(runif(25), nrow=5, ncol=5)) 
colnames(Teste) <- c("AVG_VOLUME","AVG_RETURN","VOL","PRICE","AVG_XX") 

    AVG_VOLUME AVG_RETURN VOL  PRICE  AVG_XX 
1 0.7028197 0.9264265 0.2169411 0.80897110 0.3047671 
2 0.7154557 0.3314615 0.4839466 0.63529520 0.5633933 
3 0.4038030 0.4347487 0.3441471 0.07028743 0.7704912 
4 0.5392530 0.6414982 0.4482528 0.11087518 0.3512511 
5 0.8720084 0.9615865 0.8081017 0.45781973 0.0137508 

Что я хочу сделать, это применить функция GBM из пакета sde (https://cran.r-project.org/web/packages/sde/sde.pdf) с использованием cols AVG_RETURN, VOL, PRICE в качестве аргументов для всех строк в data.frame. Что-то вроде этого:

Result <- apply(Teste,1,function(x) { 
    GBM(x[,"PRICE"],x[,"AVG_RETURN"],x[,"VOL"],1,252) 
}) 

Так я хочу Результат быть data.frame, который работает GBM для каждого запаса в Teste data.frame.

Как я могу получить этот результат?

+0

Исправлено, спасибо – RiskTech

+0

Непонятно, почему для каждой строки данных может быть разрешено отдельное геометрическое стохастическое дифференциальное уравнение. Функция apply используется для запуска функций по одной строке или по одному столбцу за раз. SDE обычно представляли бы векторные аргументы. Я думаю, вам нужно найти сайт, ориентированный на статистику, который может помочь в вашей домашней задаче. –

+0

Я не рассматриваю этот вопрос как вне контекста, а если бы имитировали будущие пути для всех акций в портфеле, чтобы делать любой анализ, который мне нужен. У меня есть все данные, необходимые для запуска геометрического броуновского движения в data.frame, и я хочу запустить его для каждого запаса наиболее эффективным способом. Это не домашнее задание и его применимость в повседневной рутине riskmanager. – RiskTech

ответ

0

Ответ на узкий вопрос о том, почему вы получаете ошибки, заключается в том, что, когда функция apply передает значения, она используется только как вектор, а не как dataframe, поэтому удаление hte-запятых в аргументах "[" даст вам результат.

Result <- apply(Teste,1,function(x) { 
    GBM(x[,"PRICE"],x[,"AVG_RETURN"],x[,"VOL"],1,252) 
}) 

Если вам это нужно, чтобы быть dataframe где каждая акция будет столбец, а входной структура данных имеет значимые акции имена, то я предлагаю использовать:

dfRes <- setNames(data.frame(Result), rownames(Teste)) 

Я думаю, что единственный способ это может иметь смысл в контексте анализа рисков, если много более симулированных запусков, чем эти отдельные экземпляры, собраны в каком-то более высоком уровне.

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