1

我正在使用分形包并使用 DFA 函数,它在控制台中为我提供了非常完整的输出:

 DFA(log(price_1m[1:1024]),detrend="poly2",overlap=0,scale.max=512)

控制台输出:

Detrended fluctuation analysis for log(price_1m[1:1024])
--------------------------------------------------------
H estimate             : 0.452347 
Domain                 : Time 
Statistic              : RMSE 
Length of series       : 1024 
Block detrending model : x ~ 1 + t + I(t^2) 
Block overlap fraction : 0 
Scale ratio            : 2 

Scale 6.00000000 1.2000e+01 2.4000e+01 4.8000e+01 96.0000000 1.920e+02 3.8400e+02
RMSE  0.00029362 4.2002e-04 5.2302e-04 8.5258e-04  0.0011629 1.403e-03 1.7068e-03
Message d'avis :
In if (cls == "signalSeries") { :
  la condition a une longueur > 1 et seul le premier élément est utilisé

事实是我只想要并且需要赫斯特指数估计。所以我想摆脱所有的休息。所以我试图获取 DFA 函数的属性(DFA 函数给出一个 fractalBlock 对象),这是我在控制台中得到的:

Call:
lm(formula = y ~ 1 + x, data = data.frame(x = xx, y = yy, w = ww), 
    weights = w)

Coefficients:
(Intercept)            x  
    -8.9269       0.4523  

Message d'avis :
In if (cls == "signalSeries") { :
  la condition a une longueur > 1 et seul le premier élément est utilisé

好的,我有一个 lm 对象,我可以从中提取斜率参数估计:

attr(DFA(log(price_1m[1:1024]),detrend="poly2",overlap=0,scale.max=512),which="logfit")$coef[2]

这是它在控制台中打印的内容:

       x 
0.452347 
Message d'avis :
In if (cls == "signalSeries") { :
  la condition a une longueur > 1 et seul le premier élément est utilisé

重点是:我只想得到 0.452347 的数值。我尝试使用 as.numeric() 函数转换我的数据,但它不起作用。

谢谢你的帮助。

4

2 回答 2

1

你只需要这样做:

H_values <- DFA(log(price_1m[1:1024]),detrend="poly2",overlap=0,scale.max=512)
H_values["H"]

它适用于虚假数据。如果警告仍然存在:

options(warn=-1)
于 2012-07-25T11:13:15.773 回答
1

这会给你一个未命名的 Double 结果:

attr(DFA(log(price_1m[1:1024]),detrend="poly2",overlap=0,scale.max=512),which="logfit")$coef[[2]]

但可能仍会包括警告。如果你先赋值给一个变量然后打印呢?

x <- attr(DFA(log(price_1m[1:1024]),detrend="poly2",overlap=0,scale.max=512),which="logfit")$coef[[2]]
x

如果您仍然收到此警告,您也许可以使用以下命令抑制它try

try( x <- attr(DFA(log(price_1m[1:1024]),detrend="poly2",overlap=0,scale.max=512),which="logfit")$coef[[2]], silent = TRUE)
x
于 2012-07-25T10:56:48.963 回答