2

R の fda パッケージを使用して、曲線のランダム サンプルを生成しています。より具体的には、周期が変化するフーリエ級数を使用して、必要な特定の構造を表しています。サンプルの定義は正常に機能しますが、基底関数の数が十分に多く、サンプルに 'pca.fd' を適用したい場合に問題が発生します。エラーは次のとおりです。

"leading minor of order [... e.g. 24] is not semi positive definite."

どうしてこうなったのか、また回避する方法があればと思います。明らかに、純粋なコーディングの問題ではなく、むしろ数値的または統計的な問題です。しかし、割り当てられた係数はすべて iid であり、フーリエ基底は直交関数を提供します。さらに、期間がデフォルトレベルに設定されている場合、すべてが正常に機能します。では、 period=2 の何が問題になるのでしょうか?

この問題に関するヒントをいただければ幸いです。事前にどうもありがとうございました !

エラーを再現するコードは次のとおりです。

nc <- 40 # Number of curves  
nb <- 101 # Number of basis functions  
coefm <- matrix(rnorm(nb*nc),nrow=nb,ncol=nc) # random coeficient matrix

# basis function object with "normal" period:  
mybase = create.fourier.basis(rangeval=c(0,1), nbasis=nb, period=1) 

# generate the sample of curves:  
fdobj <- fd(coefm,mybase) 

# Principal component analysis:  
pca.fd(fdobj) # should work, even though the number of basis functions is large.

# Now: change the period of the fourier basis object:  
mybase = create.fourier.basis(rangeval=c(0,1), nbasis=nb, period=2)  
fdobj <- fd(coefm,mybase)  

pca.fd(fdobj) # Here is the error. However, this does not happen with nb<20 
4

1 に答える 1