fBasics::fitStable 工作可疑
fBasics::fitStable working suspiciously
我一直在使用 fBasics
包分别使用 fitStable
函数来适应某些系列更普遍、更稳定的发行版。
有两种方法 - 分位数方法,由 McCulloh 提出
然后是 MLE 方法。
该函数提供了两者,但 MLE 方法确实非常慢,有时甚至无法计算 - 并产生 NA
。
它使用 nlminb
来最大化似然函数(认为它最小化了 -likelihood fun)。
但即使它在很长一段时间后完成,对标准正态(它应该给出 (2,0,1,0)
的值)的 1000 个观测值的估计也给出:
Estimated Parameter(s):
alpha beta gamma delta
1.99990000 0.22448469 0.71247528 0.02995476
我所期望的,至少 beta
更接近于零。
有没有人有什么经验可以分享?
知道如何加快速度吗?
我尝试了 20 次 100 次(而不是 1000 次)。有很多贝塔值接近于零(正如预期的那样),但有些接近于 -1。伽玛也相当一致。时间过去了 10 分钟。
library(fBasics)
set.seed(100)
x <- rnorm(1000)
a <- vector(,20)
b <- vector(,20)
c <- vector(,20)
d <- vector(,20)
system.time(
for(i in 1:20){
samp <- sample(x, size = 100, replace = T)
v <- stableFit(samp, type='mle')
a[i] <- (v@fit)$estimate[1]
b[i] <- (v@fit)$estimate[2]
c[i] <- (v@fit)$estimate[3]
d[i] <- (v@fit)$estimate[4]
}
)
系统时间:
用户系统已过
598.67 1.49 602.80
a
1.8070, 1.9999, 1.9999, 1.9140, 1.9999, 1.9999, 1.9999, 1.9999, 1.9999, 1.8967, 1.9999, 1.9999, 1.9999, 1.9999, 1.9999, 1.9999, 1.9999, 1.9999, 1.9999, 1.8166
b
-0.9999, 0.1247, 0.0070, -0.9999, 0.0026, 0.0177, 0.0083 0.0409, 0.0179, 0.3062, 0.8251, -0.0769, 0.0071, -0.7928, -0.9225, -0.0147, -0.7459, -0.0191, 0.0016, -0.9999
c
0.7121, 0.7337, 0.7654, 0.7287, 0.8393, 0.6441, 0.7475, 0.7113, 0.7204, 0.6475, 0.7065, 0.7408, 0.7269, 0.7191, 0.6453, 0.6824, 0.6815, 0.7642, 0.7970, 0.6347
d
0.1576, 0.1092, -0.0115, 0.0196, 0.2325, 0.1222, 0.2546, -0.0610, 0.0873, 0.0438 -0.0120, -0.1266, 0.1631, 0.1443, -0.0793, -0.1651, 0.1649, 0.0891, -0.0043, 0.1259
我一直在使用 fBasics
包分别使用 fitStable
函数来适应某些系列更普遍、更稳定的发行版。
有两种方法 - 分位数方法,由 McCulloh 提出 然后是 MLE 方法。
该函数提供了两者,但 MLE 方法确实非常慢,有时甚至无法计算 - 并产生 NA
。
它使用 nlminb
来最大化似然函数(认为它最小化了 -likelihood fun)。
但即使它在很长一段时间后完成,对标准正态(它应该给出 (2,0,1,0)
的值)的 1000 个观测值的估计也给出:
Estimated Parameter(s):
alpha beta gamma delta
1.99990000 0.22448469 0.71247528 0.02995476
我所期望的,至少 beta
更接近于零。
有没有人有什么经验可以分享?
知道如何加快速度吗?
我尝试了 20 次 100 次(而不是 1000 次)。有很多贝塔值接近于零(正如预期的那样),但有些接近于 -1。伽玛也相当一致。时间过去了 10 分钟。
library(fBasics)
set.seed(100)
x <- rnorm(1000)
a <- vector(,20)
b <- vector(,20)
c <- vector(,20)
d <- vector(,20)
system.time(
for(i in 1:20){
samp <- sample(x, size = 100, replace = T)
v <- stableFit(samp, type='mle')
a[i] <- (v@fit)$estimate[1]
b[i] <- (v@fit)$estimate[2]
c[i] <- (v@fit)$estimate[3]
d[i] <- (v@fit)$estimate[4]
}
)
系统时间:
用户系统已过
598.67 1.49 602.80
a
1.8070, 1.9999, 1.9999, 1.9140, 1.9999, 1.9999, 1.9999, 1.9999, 1.9999, 1.8967, 1.9999, 1.9999, 1.9999, 1.9999, 1.9999, 1.9999, 1.9999, 1.9999, 1.9999, 1.8166
b
-0.9999, 0.1247, 0.0070, -0.9999, 0.0026, 0.0177, 0.0083 0.0409, 0.0179, 0.3062, 0.8251, -0.0769, 0.0071, -0.7928, -0.9225, -0.0147, -0.7459, -0.0191, 0.0016, -0.9999
c
0.7121, 0.7337, 0.7654, 0.7287, 0.8393, 0.6441, 0.7475, 0.7113, 0.7204, 0.6475, 0.7065, 0.7408, 0.7269, 0.7191, 0.6453, 0.6824, 0.6815, 0.7642, 0.7970, 0.6347
d
0.1576, 0.1092, -0.0115, 0.0196, 0.2325, 0.1222, 0.2546, -0.0610, 0.0873, 0.0438 -0.0120, -0.1266, 0.1631, 0.1443, -0.0793, -0.1651, 0.1649, 0.0891, -0.0043, 0.1259