2 votos

Prueba de Dickey-Fuller Aumentada / Prueba de raíz unitaria en un marco de datos de series temporales múltiples en R

Tengo un dataset/dataframe en el cual he calculado los retornos logarítmicos diarios de cinco mil empresas y estas empresas son también columnas. Quiero realizar una prueba ADF en este dataframe. He encontrado cómo estimar la prueba ADF en un vector pero no pude encontrar cómo calcularlo en un dataframe o estructura de matriz. Además, ¿cómo puedo excluir la columna de fechas al estimar la prueba ADF en las empresas?introducir descripción de la imagen aquí

La imagen ilustra una parte de mi dataset. El código que ejecuté y el error que recibí son los siguientes

library(tseries)
adf.test(logs, alternative = c("estacionario", "explosivo"),
     k = trunc((length(1)-1)^(1/3)))

Error en adf.test(logs, alternative = c("estacionario", "explosivo"), k = trunc((length(1) -  :  x no es un vector o una serie temporal univariada

0 votos

No voté negativamente tu pregunta pero puedo entender por qué alguien lo hizo: Por favor muestra tu código y señala exactamente las partes donde encuentras problemas.

1 votos

Espero que estas adiciones a la pregunta ayuden a comprender lo que estoy tratando de estimar.

1voto

tdyen Puntos 640

Hay dos formas de realizar la prueba ADF a un marco de datos, primero escribir un bucle para aplicar la prueba a todas las columnas o usar la función apply en tus datos. Para dejar fuera la primera columna solo crea otro marco de datos de esta manera: da=tuNombreDeDatos[,-1]. El código para la ADF sería algo así: apply(da,2,adfTest,lags=0,type="c"). El 2 está especificando que la función adfTest debería aplicarse a las columnas, el adfTest es del paquete fUnitRoots, lags=0 para que no realice la prueba desfasando la serie y type="c" para incluir una constante. No me gusta la prueba del paquete timeSeries porque automáticamente desfasará la serie y obtendrás una serie estacionaria "siempre".

0 votos

Corrí la prueba de acuerdo al código que especificaste pero recibí un error Error in res.sum$coefficients[coefNum, 1] : subscript out of bounds

0 votos

Eso es raro porque ese error significa que estás tratando de aplicar la función a una columna que no existe. El código funciona perfectamente en mi computadora, pero solo estoy usando un marco de datos de 5 columnas. Lo siento, pero creo que no puedo ayudarte con ese problema.

1voto

fkydoniefs Puntos 11

No está claro en la publicación si estás consultando sobre la mecánica/código para hacer un bucle sobre la serie o los valores críticos apropiados. Aquí hago un comentario sobre lo último.

Uno de los principales problemas al probar múltiples hipótesis es el hecho de que un cierto porcentaje fallaría bajo la premisa nula (como ilustra este cómic de xkcd https://xkcd.com/882/).

Si realizas una prueba DF en 10,000 acciones, esperarías que 500 muestren reversión a la media al 5% de confianza, incluso si todas son caminatas aleatorias independientes. Es necesario tener en cuenta esta característica mediante la reducción del nivel de confianza.

Si tus pruebas son independientes, entonces podrías tener un ajuste tipo Bonferroni del nivel de confianza para incorporar pruebas múltiples (https://en.m.wikipedia.org/wiki/Bonferroni_correction). Pero las acciones no son independientes, por lo tanto, tus estadísticas t no son independientes tampoco. Para tener en cuenta su correlación, usaría valores críticos bootstrap en el vector de estadísticas t.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X