私は ff パッケージを使用して保存している大きな行列 (1,140 行 x 1,140 行) を持っています。
これから共分散行列を計算する効率的な方法はありますか? cov 関数を使用すると、次のエラーが表示されます。
cov(X) のエラー: 'x' と 'y' の両方を指定するか、行列のような 'x' を指定してください
cov が ff オブジェクトを理解していないことを考えると、これは驚くべきことではありません。現在、単純なネストされた for ループを使用しています。
covarianceMatrix <- matrix(0,nrow=ncol(ffObject),ncol=ncol(ffObject))
distinctValues <- sum(ncol(ffObject):1)
for(i in 1:ncol(ffObject))
{
for(j in i:ncol(ffObject))
{
if(i==j)
{
covarianceMatrix[i,j] <- var(ffObject[,i])
}
else
{
covarianceMatrix[i,j] <- covarianceMatrix[j,i] <- cov(ffObject[,i],ffObject[,j])
}
}
}
これは機能しますが、非常に遅いです。