在这种情况下,为什么我在 R 中出现“'度'必须小于唯一点数”的错误?
set.seed(0)
# this is fine
dim(poly(runif(1e3),20))
# this will not work
dim(poly(runif(1e3),30))
我们在哪里来自均匀分布的唯一数据点,度数仅为?
我发现答案是“数值溢出”
但是我们使用的是正交多项式而不是原始的,这会解决数值问题(示例kappa(poly(runif(100),20)))吗?
在这种情况下,为什么我在 R 中出现“'度'必须小于唯一点数”的错误?
set.seed(0)
# this is fine
dim(poly(runif(1e3),20))
# this will not work
dim(poly(runif(1e3),30))
我们在哪里来自均匀分布的唯一数据点,度数仅为?
我发现答案是“数值溢出”
但是我们使用的是正交多项式而不是原始的,这会解决数值问题(示例kappa(poly(runif(100),20)))吗?
在 R 中,poly 函数生成一个多项式,然后进行 QR 分解以使其正交。对于高次多项式输入,您将获得 Vandermode 矩阵的高条件数,当poly尝试使列正交时,它会引发错误(因为输入在双精度浮点的限制内看起来秩不足) .
考虑:
x <- poly(runif(100),30,raw=TRUE)
QR <- qr(x)
QR$rank
这基本上是 poly 的源代码中的内容。QR$rank 会远远低于学位。