2016-04-15 20 views
0

のパラメータとしてdata.frameの各行の値を使用して適用し、各ラインは異なる在庫データである:は、次のように私は1つの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 

私は何をしたいかを適用することですパッケージsde(https://cran.r-project.org/web/packages/sde/sde.pdf)のGBM関数は、data.frameのすべての行の引数としてAVG_RETURN、VOL、PRICEの各列を使用します。 このような何か:

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

だから私は、結果TESTE data.frameの各株式のGBMを実行data.frameになりたいです。

どうすればこの結果が得られますか?

+0

修正あり、ありがとう – RiskTech

+0

データの各行に対して別々の幾何学的確率微分方程式を解くことができるのは、むしろ不明です。 apply関数は、一度に1行または1列の関数を実行するために使用されます。 SDEは通常、有力なベクトル引数です。あなたの宿題に役立つ統計的なサイトを見つける必要があると思います。 –

+0

私は、この質問が文脈から外れているとは考えていません。必要な分析を行うために、ポートフォリオ内のすべての株式の将来の経路をシミュレートするとどうでしょうか。私は、data.frameに幾何学ブラウン運動を実行するのに必要なすべてのデータを持っています。可能な限り最も効率的な方法で各在庫に対して実行したいと思います。これは宿題ではなく、日常的なリスク管理者のルーチンに適用されます – RiskTech

答えて

0

なぜエラーが出るのかという狭い質問に対する答えは、apply関数が値を渡すとき、それはデータフレームではなくベクトルとしてだけなので、引数のhteカンマを削除すると結果が得られます。あなたは、各在庫が列になるデータフレームをすることを必要とし、入力されたデータ構造は、意味のある銘柄を持っている場合

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

、その後、私が使用することをお勧め:

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

は、私が唯一の方法は、これを考えますこれらの単一のインスタンスがいくつかのより高いレベルのコンテキストで組み立てられているよりも多くのシミュレーションが実行されている場合には、リスク分析のコンテキストで有意義である可能性があります。

関連する問題