0

以下のようなセットアップがあります

for(V in (seq(1, 250, by = 5))){
   for(n in (seq(1, 250, by = 5))){

        # 1) Working Algorithm creating a probability 
             ie. vector in range [0:1] 

        # 2) Take the natural log of this probability 
        a <-  log(lag(Probability), base = exp(1))

        # 3) calculate price differences
        b <-  abs(diff(Price) -1)

        # 4) Then compute correlation between a and b
        cor(a, b) 

        # 5) Here I'd like to save this in the corresponding index of matrix
   }
}

[V, n] サイズの行列を出力として取得し、各ループから収集します。

これにはいくつか問題があります。

  • 最初の問題は、相関が計算できないProbabilityことです。多くの場合、 は 0 であり、ベクトルにln(0) = -Inf入力が作成されます。入力を含むベクトルのorln(Probability)を計算する方法はありますか?std.devcorLn-Inf

  • 2 番目の質問は、この相関出力をループごとに生成された行列に保存する方法です。

ご協力いただきありがとうございます。これが十分に明確であることを願っています。

4

2 に答える 2

2

-Inf でできることは、それを NA に置き換えることです。次に例を示します。

x = runif(10)
x[3] = 1/0
> is.infinite(x)
 [1] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
x[is.infinite(x)] <- NA
> x
 [1] 0.09936348 0.66624531         NA 0.90689357 0.71578917 0.14655174
 [7] 0.59561047 0.41944552 0.67203026 0.03263173

そして、次のna.rm引数を使用しsdます。

>  sd(x, na.rm = TRUE)
[1] 0.3126829
于 2013-01-28T12:58:24.043 に答える
2

2 番目の質問 (私の 2 番目の質問は、この相関出力をループごとに生成された行列に保存する方法です) については、ループの前に行列を初期化し、計算された各相関を対応するインデックスに次のように格納できます。

sz <- seq(1, 250, by = 5)
out_mat <- matrix(0, nrow=length(sz), ncol=length(sz))
# then continue with your for-loop
for (V in 1:length(sz)) {
    for(n in length(sz)) {
        # here instead of accessing V and n in computing probability
        # use sz[V] and sz[n]
        ...
        ...
        # after computing the correlation, here use V and n (not sz[V] or sz[n])
        out_mat[V, n] <- c # c holds the value of cor(a,b)
    }
 }
于 2013-01-28T13:03:17.623 に答える