Skip to content

Regression & quantmod

2 messages · Thomas Etheber, Jeff Ryan

#
Hi all,

I just wanted to estimate a single index model using the quotes derived 
from the quantmod-package as pasted below.

Does somebody know why the first regression is not working as expected? 
Why do I have to cast the xts series to the datatype numeric or what am 
I missing?

Best regards,
Thomas

<<<<<<<<<<<<<<

require("quantmod")
getSymbols( "DTE.DE")
getSymbols( "^GDAXI")
dteReturns <- ClCl( DTE.DE )
daxReturns <- ClCl(GDAXI)
dteReturn <- merge( dteReturn, daxReturn, all=FALSE)[,1]
daxReturn <- merge( dteReturn, daxReturn, all=FALSE)[,2]
m <- lm ( dteReturn ~ daxReturn )
summary(m)

Call:
lm(formula = dteReturn ~ daxReturn)

Residuals:
Fehler in dimnames(x) <- dn :
L?nge von 'dimnames' [2] ungleich der Arrayausdehnung

 > m <- lm ( as.numeric(dteReturn) ~ as.numeric( daxReturn ) )
 > summary(m)

Call:
lm(formula = as.numeric(dteReturn) ~ as.numeric(daxReturn))

Residuals:
Min 1Q Median 3Q Max
-9.411e-02 -7.405e-03 2.835e-05 7.409e-03 1.524e-01

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.0002645 0.0006123 -0.432 0.666
as.numeric(daxReturn) 0.6378738 0.0334159 19.089 <2e-16 ***
---
Signif. codes: 0 ?***? 0.001 ?**? 0.01 ?*? 0.05 ?.? 0.1 ? ? 1

Residual standard error: 0.01661 on 734 degrees of freedom
(1 observation deleted due to missingness)
Multiple R-squared: 0.3317, Adjusted R-squared: 0.3308
F-statistic: 364.4 on 1 and 734 DF, p-value: < 2.2e-16
#
The likely problem is the dimensions inherent to xts.

as.numeric is a good approach, but you can also play with the quantmod
specifyModel tools.

An example working directly on your data:
Daily periodicity from 2007-01-02 to 2009-12-09
quantmod object:   lm1260810442.68897   Build date:  2009-12-14 11:07:22

Model Specified:
     ClCl(DTE.DE) ~ ClCl(GDAXI)

Model Target:  ClCl.DTE.DE               Product:  DTE.DE
Model Inputs:  ClCl.GDAXI

Fitted Model:

        Modelling procedure:  lm
        Training window:  723  observations from  2007-01-03 to 2009-12-07

Call:
lm(formula = quantmod at model.formula, data = training.data)

Coefficients:
(Intercept)   ClCl.GDAXI
  3.889e-05    6.515e-01
quantmod object:   lm1260810442.68897   Build date:  2009-12-14 11:07:22

Model Specified:
     ClCl(DTE.DE) ~ ClCl(GDAXI)

Model Target:  ClCl.DTE.DE               Product:  DTE.DE
Model Inputs:  ClCl.GDAXI

Fitted Model:

        Modelling procedure:  lm
        Training window:  723  observations from  2007-01-03 to 2009-12-07

Call:
lm(formula = quantmod at model.formula, data = training.data)

Residuals:
       Min         1Q     Median         3Q        Max
-0.0892824 -0.0074720 -0.0002732  0.0070752  0.1521019

Coefficients:
             Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.889e-05  6.033e-04   0.064    0.949
ClCl.GDAXI  6.515e-01  3.302e-02  19.732   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.01622 on 721 degrees of freedom
Multiple R-squared: 0.3507,     Adjusted R-squared: 0.3498
F-statistic: 389.4 on 1 and 721 DF,  p-value: < 2.2e-16


The method= can be (from the docs):

Details:

     Currently available methods include:

     lm, glm, loess, step, ppr, rpart[rpart], tree[tree],
     randomForest[randomForest], mars[mda], polymars[polspline],
     lars[lars], rq[quantreg], lqs[MASS], rlm[MASS], svm[e1071], and
     nnet[nnet].

It is quite experimental still, as its general use is often limited,
but for what you are looking at it may help.

Best,
Jeff
On Mon, Dec 14, 2009 at 10:55 AM, Thomas Etheber <etheber at gmx.de> wrote: