我正在使用 R 的 fda 包来生成随机曲线样本。更具体地说,我正在使用具有周期变化的傅立叶级数来表示我需要的特定结构。定义样本工作正常,但是当基函数的数量足够大并且我想在样本上应用“pca.fd”时遇到问题。错误是:
"leading minor of order [... e.g. 24] is not semi positive definite."
我想知道为什么会发生这种情况,以及是否有办法规避它。显然,这是一个数字或统计问题,而不是纯粹的编码问题。但是我分配的所有系数都是独立同分布的,并且傅立叶基提供了正交函数。此外,当时间段设置为其默认级别时,一切正常。那么 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