7. Captulo 1
Introduccion
No presente documento revisaremos e aplicaremos un analise de datos fun-cionais,
a unha base de datos sobre os distintos prezos da enerxa ao longo do da.
Estes prezos varan segundo en que franxa horaria do da esteamos, fomentado
pola distinta demanda que hai da enerxa ao longo do mesmo.
As podemos diferenciar horas valle e horas punta, onde como ben indica
o seu nome as primeiras refrense as horas de menor prezo e as segundas as
de maior prezo. A disposicion destes prezos ven dado polo mercado da enerxa
electrica. Onde a entidade correspondente, se encargara de crear as curvas de
oferta e demanda cos datos das ofertas de venta e compra, dos vendedores e
compradores respectivamente. Do cruce destas curvas e de onde sae o prezo
correspondente a cada hora do da seguinte da subasta.
No noso estudio contaremos cos datos correspondentes a estes prezos, desde
o ano 1999 ata o mes de novembro de 2012. Anda as estudiaremos mais a
fondo os datos correspondentes ao ano 2012 (su
8. cientes para ter un bo exem-plo
de traballo con datos funcionais), mentres que os demais os usaremos para
comparar ou ver a progresion que seguiron.
Estos datos vi~nan nunha orixe co formato horario espa~nol, e dicir, que tendo
en conta o cambio horario ti~namos das con 23 horas e outros con 25. Para sol-ventar
este problema hai varias opcions, pero neste caso optamos por modi
9. car
a nosa base de datos e pasala a un sistema horario que non tivese eses cambios,
a UCT. Teremos que ter isto presente cando vexamos os resultados, xa que se o
mes se corresponde ao horario de inverno deberemos sumar unha hora, mentres
que se corresponde ao horario de veran deberemos sumar duas para estar no
horario respectivo da pennsula.
Nesta li~na, comezaremos facendo unha primeira analise exploratoria dos da-tos,
detectando deste xeito cales son as horas valle e punta, posibeis diferencias
nas medias ao longo dos anos ou incluso entre estacions. Para logo aplicar mais
en profundidade tecnicas mais especi
10. cas de analise de datos funcionais, median-te
o paquete de R fda.usc. Os comandos utilizados podense atopar no ultimo
captulo, na seccion comandos de R.
2
11. Captulo 2
Primeiro Analise dos Datos
Neste primeiro apartado, faremos un pequeno mergullo nos datos respectivos
ao ano 2012. Decidimos quedarnos con este ano xa que e o mais actual, anda
que para este ano non contamos cos datos do mes de decembro. Notar que para o
noso caso teremos unha funcion que nos modeliza a variacion do prezo para cada
da do ano. Deste xeito para a base de datos que estamos a utilizar teramos uns
335 datos funcionais. Se consideraramos outro ano teramos entre 365 ou 366
segundo o ano sea bisiesto ou non. Podemos nun primeiro paso representar os
nosos datos en bruto, como podemos ver na seguinte gra
13. ca
vai de 1 ata as 24 horas):
2.1. Representacion Datos
O primeiro problema ao que nos expo~nemos cando traballamos con datos
funcionais e a sua representacion. Ante isto podemos proceder utilizando a pro-pia
discretizacion da que dispo~nemos nos nosos datos, ou representalos nunha
3
14. base xa sexa fourier, b-spline ou outras.
No noso traballo utilizaremos unha representacion en base b-spline. Xa que
a base de fourier e mais optima para datos periodicos, e anda que poderamos
pensar na periocidade dos nosos datos non esta de todo claro. E hoxe en da
tampouco temos demasiados problemas coa base b-spline, en canto a problemas
de calculo computacional.
Por outro lado notar, que para a base de fourier o numero optimo de ele-mentos
da base e 7 mentras que para a base b-spline e de 10. Esta informacion
proporcionola R mediante o comando min.basis() do paquete fda.usc, que nos
da a seguinte sada:
Para a base B-spline
The minimum GCV (GCV.OPT=9.2728) is achieved with
the number of basis (numbasis.opt=10)
and lambda value (lambda.opt=0)
Para a base de Fourier
The minimum GCV (GCV.OPT=13.8679) is achieved with
the number of basis (numbasis.opt=7)
and lambda value (lambda.opt=0)
Podemos ver a continuacion de modo gra
15. co como aproxima cada unha das
representacions a un dos datos escollido ao azar:
Enton agora que decidimos como representar os nosos datos, imoslle aplicar a
devandita base para suavizalos obtendo agora a seguinte representacion gra
16. ca
dos mesmos onde notamos como as curvas son mais suaves sen os picos que
presentaban antes:
4
17. En canto a metrica a utilizar, como son prezos da enerxa poderamos pensar
en utilizar a metrica L2 para diferenciar prezos pola altura.
2.2. Profundidade e Outliers
Para estudar e en concreto clasi
18. car datos funcionais, a parte de ter unha boa
representacion dos mesmos tamen e importante saber cales estan nos extremos
e cales son os centrales. Para este proposito, existen varios metodos como son o
de Fraiman y Muniz, Moda h ou o Proxeccions Aleatorias (RP).
Nos imos utilizar Moda h, que se basa en observar as relacions de cercana
entre as funcions para asignar a maior profundidade a aquela que de algunha
maneira este mais rodeadapolas demais. En R, esto calcularemos utilizando o
comando depth.mode().
5
19. Obtemos que o dato mais profundo correspondese ao da 24 de agosto que se
corresponde coa li~na en vermello, mentres que a amarela correspondese a media
recortada(10% neste caso). Para o resto das curvas, observamos que aquelas
funcions que antes ti~namos cercanas ao eixo cero (ver pag. 5) que as pinta dun
tono tan claro que case non se ven. Notar que a canta maior profundidade mais
oscura e a li~na que representa o dato.
Estas curvas con tan pouca profundidade poderan ser outliers dos nosos
datos. Agora imos proceder a estudiar cales poderan ser os posibles outliers e
decidir que facer con eles.
Observamos que os outliers son aqueles datos, nos que moitos dos seus puntos
o seu valor e cero algo bastante anormal dado que estamos a traballar con prezos
6
20. da enerxa. Por outro lado, dos 335 datos que temos para o ano 2012 os posibeis
datos outliers so son 10. Debido a estas condicions, decidimos eliminalos dado
que o mais probable e que eses datos foran mal medidos ou non se te~nan datos
del. Ah o seu gran numero de valores cero na nosa discretizacion.
2.3. Media e varianza
Nos apartados anteriores abordamos o problema de representacion e os posi-bles
outliers. Revisado estes puntos os nosos datos quedaran do seguinte xeito:
Neste gra
21. co podemos ver como se comportan as funcions dos prezos diarios
da enerxa. As observamos que as horas de menor costo da enerxa parecen
corresponderse ao intervalo que vai das 2:00 ata as 7:00 (horario espa~nol pe-ninsular).
Mentres que por outro lado hai unha tendencia ascendente nas horas
correspondentes ao medioda e cara a hora de cear.
Isto pode deberse que nesas horas a actividade humana e maior, polo tanto
temos un maior consumo de enerxa. E unha maior demanda por parte dos
consumidores, fai que no mercado da enerxa os prezos de compra-venta da
mesma suban, con respecto a outras horas do da.
Notemos que aqu estamos a representar todos os datos de golpe, e podemos
estar obviando diferencias entre as distintas epocas do ano. Polo tanto, imos
representar os datos segundo as estacions engadindo ademais a mediana en cada
gra
23. Podemos observar diferencias notables entre as distintas estacions. Dun pri-meiro
vistazo podemos observar unha maior dispersion dos datos da primavera
respecto por exemplo dos de inverno.
Por outro lado, o comportamento da mediana tampouco e o mesmo. A media-na
correspondente ao inverno, ten maiores desniveis mentres que a da primavera
e veran se mante~nen moito mais planas.
Nestas gra
24. cas podemos ver a comparacion entre as distintas epocas do ano.
Os prezos parecen ser inferiores nas horas valle (0-8 horas) durante as estacions
8
25. do outono e inverno. Notar tamen que, pola contra o prezo de inverno e outono e
maior na franxa horaria 17-22 horas(horario UTC). Isto pode deberse, a que para
estas duas estacions as horas punta son as comprendidadas na franxa horaria
18-22 horas, mentres que para primavera e veran son as comprendidas entre as
11-15 horas. E as tarifas correspondentes son mais elevadas nas horas punta que
nas horas valle, de ah que notemos a diferencia. Xa que estamos a comparar
horas punta (no caso outono e inverno) con horas que non estan consideradas
horas punta (para veran e inverno).
En canto a variabilidade dos nosos datos, temos unha maior variabilidade nas
primeiras horas do da, que tende a reducirse segundo avanza o da. A estacion
con menor variabilidade e o veran.
Vimos que tanto a media como a mediana varan en funcion das estacions.
Como ultimo punto deste apartado, distinguiremos entre das de semana e das
correspondentes a
26. n de semana, as como a comparacion dos prezos medios ao
longo destes ultimos anos.
Comezando coa separacion dos das de semana e dos de
27. n de semana (con-siderando
ademais neste grupo das non laborables), temos os seguintes gra
29. Temos que na franxa horaria comprendida entre as 7:00 e as 22:00, o pre-zo
correspondente aos das de semana e superior ao dos de
30. n de semana. Sen
embargo, ocorre o contrario se nos
31. xamos na franxa horaria restante, corres-pondente
a horas de noite e madrugada.
En canto a evolucion dos precios, observamos que non hai unha tendencia
concreta. A media dos prezos vai dando tumbos. As temos que o ano mais caro
de media foi o ano 2008, mentres que o de menor custo foi o 1999. A pesar de
que non observamos que cada ano e mais caro que todos os que o preceden, si
que vemos que pese aos bandeos o prezo medio vai en aumento.
10
32. Captulo 3
Analise Compo~nentes
Principais
Este apartado dedicaremolo a realizar unha analise de compo~nentes prin-cipais
sobre os nosos datos. Igual que no caso multivariado, o analise de com-po~
nentes principais consiste en dar unha representacion dos datos mediante o
criterio de conservacion da maxima varianza nunha dimension menor intentando
observar detalles dos datos que non podemos ver cos datos en bruto.
Nos procederemos utilizando o paquete fda.usc como xa o vi~nemos facendo
durante todo o documento. Deste xeito mediante o comando pca.fd(), obtere-mos
as compo~nentes principais, a varianza explicada por cada unha delas e os
correspondentes scores.
En primeiro lugar vexamos cales son as compo~nentes principais e cales son
as porcentaxes de varianza que explican cada unha delas, ademais de debuxar
os scores correspondentes as duas primeiras compo~nentes principais.
11
33. CP 1 CP 2 CP 3 CP 4
Varianza explicada 0.554 0.215 0.138 0.041
Notamos que coas duas primeiras compo~nentes principais explicamos sobre
76% da varianza, mentres que se collemos tamen a terceira pasamos a ter ex-plicada
sobre un 90 %. Polo tanto para ter unha alta porcentaxe de varianza
explicada deberamos escoller tres compo~nentes o que eleva a di
34. cultade da
interpretacion.
Visto que precisamos das tres primeiras compo~nentes principais para explicar
unha gran variabilidade, podemos facer a modo ilustrativo a representacion dos
scores respecto desas tres compo~nentes principais. E comprobamos que a maiora
dos puntos se mante~nen moi apelotonados. As cores corresponden cada un a un-ha
das estacions (negro=inverno,verde=veran,vermello=primavera,azul=outono).
Podemos representar o noso analise de compo~nentes principais mediante as
seguintes gra
35. cas, nas que teremos que facer certo esforzo na interpretacion das
mesmas.
12
37. cas. Xa
que a cuarta compo~nente principal explica so un 4% polo que non e relevante
para o esforzo necesario de interpretacion.
En todas as gra
38. cas a media (li~na continua) indcanos a media do prezo para
os distintos das. As se para un dato temos scor positivo, este atopase na li~na
gorda. En caso contrario, atoparase na li~na punteada.
Deste xeito na primeira gra
39. ca podemos ver que se temos scor positivo es-tar
amos por riba da media. Sen embargo na gra
40. ca dous, podemos comprobar
que se temos scor positivo o prezo sera menor respecto da media nas horas valle
(0-8 horas) sendo maior para o resto das horas.Notar que se temos scor negati-vo
a variacion do prezo e menor que dos que te~nen scor positivo. A funcion do
prezo mantense mais uniforme sen saltos tan grandes. Na terceira gra
41. ca vemos
unha
uctuacion maior. Podemos decir neste caso que se temos scor positivo,
os prezos estaran por riba da media na franxa comprendida aproximadamente
entre 1-4 horas e as 17-14 horas. Mentres que na parte central do da estaramos
por debaixo da media.
O resto das compo~nentes (aqui so representamos as catro primeiras), non
nos imos deter a estudialas, xa que non explican unha porcentaxe interesante
para o esforzo que implica.
13
42. Captulo 4
Bootstrap
No traballo con datos funcionales tamen podemos aplicar tecnicas de re-muestreo,
neste contexto o mais habitual e utilizar o bootstrap suavizado. Con
este procedimiento o que conseguimos e encher os ocos no espacio funcional,
obtendo bandas de con
43. anza que se debuxan como aquelas mostras que estean
a unha certa distancia do estimador.
Para realizar isto no paquete fda.usc contamos coa funcion fdata.bootstrap(),
que por defecto remuestreara a media. Poderemos especi
44. car ademais do esti-mador
a remuestrear, o numero de remuestreos bootstrap ou o nivel crtico.
Neste captulo remuestrearemos, diferenciando entre das laborables a das
de
45. n de semana. E remuestrearemos a media. Obtemos os seguintes resultados:
Podemos observar diferenzas no comportamento da media (li~na azul), como
unha banda de con
46. anza (banda rosa) distinta para ambos conxuntos. Vemos
que precisamos dun maior ancho nos datos dos das respectivos ao
50. ca para poder facilitar a comparacion de ambas poboacions.
O que representamos non son as bandas, senon que son un conxunto de
curvas que pertencen a devandita banda. Outra forma de representalas sera
considerando os elementos mais profundos (segun o criterio de Fraiman e Mu-niz)
para cada remuestra.
Podemos observar, que neste caso non se nos representa unha banda senon
que so se nos representa unhas poucas curvas (li~nas rosas). Isto e debido a que
15
51. non esta suavizado, e en cada mostra collemos a mais profunda. Para solucionar
isto, bastanos con aplicarlle unha suavizacion obtendo o seguinte:
Estas gra
52. cas ademais dannos unha idea da dispersion dos datos. Anda que
non e moi notable, parece haber unha maior dispersion nos datos corresponden-tes
aos das do
53. n de semana. Se aplicamos este suavizado ao remuestreo inicial
que
57. cas de esquerda son sen facer a suavizacion e as da dereita o
que obtemos ao aplicarlle a suavizacion. Por outro lado podemos obter mais
informacion sobre a banda construida so con acceder ao obxeto $rep.dist, que
para o primeiro remuestreo da media que
62. cacion dos nosos datos en grupos
que te~nan caractersticas similares. Nesta li~na podese proceder de duas maneiras,
dunha forma non supervisada(cluster) ou supervisada(discriminante). A nosa
intencion, e a de ver se podemos formar algun grupo, que se corresponda con
algun perodo temporal (meses, estacions ou semanas)
5.1. Clasi
65. cacion e non supervisada, xa que non procedemos
sabendo a que grupo pertence cada dato. Senon que usaremos certas reglas
para xuntar os datos nos diferentes grupos. Este numero de grupos tampouco
estara prede
66. nido.
Nos algoritmos xerarquicos, comezamos tendo os datos todos por separado.
Para nas sucesivas iteracions ir formando grupos ata chegar a ter un so. Notar
que se un dato se une a un grupo non se volvera a separar dese grupo.
Os resultados obtidos representanse nun dendograma e sera decision do in-vestigador
decidir o numero de grupos que quere formar a vista dos resultados
obtidos. Existen varias formas de proceder, unha sera a de cortar o dendograma
por onde se produce un maior salto.
Para realizar este estudio dos posibles clusters a formar, temos duas opcions:
usar o comando kmeans.fd() do paquete fda.usc, ou realizar un cluster xerarquico
co comando hclust(). Neste caso realizaremos os dous, observando as diferenzas
que temos con un e con outro. A parte das diferencias nos propios segundo o
metodo que utilicemos para cada un.
Comezamos utilizando o comando hclust utilizando a metrica L2, e os meto-dos
do veci~no mais proximo, o do promedio, veci~no mais lonxano e o do centroide.
Os dendogramas correspondentes son os que obtemos a continuacion:
18
67. Para decidir o numero de clusters mais correcto non hai unha forma concreta.
Se nos basamos na de cortar o dendograma por donde fai un salto maior, pode-mos
observar que no caso do veci~no mais proximo ou o do centroide, quedamonos
case como ao principio pois so distinguimos un dato respecto dos demais. A sim-ple
vista parece que o que fai grupos mais distinguibles e o metodo do veci~no
mais lonxano.
A vista dos gra
68. cos imos quedarnos co metodo do veci~no mais lonxano, no
que podemos formar tres grupos dunha forma mais ou menos aceptable. Se
revisamos mais en profundo estos grupos podemos observar o seguinte:
19
70. cas podemos ver como estan formados esos grupos. O grupo 1
estan aqueles das de menor precio, mentres que no grupo 2 xuntou aos das de
maior precio. Podemos observar a media de prezos para os distintos grupos na
gra
71. ca da dereita. Anda que se observamos que datos estan comprendidos en
cada conxunto non se corresponden nin a estacions, meses ou semanas concretas.
As por exemplo, no grupo 1 hai das pertencentes ao inverno e ao veran.
Anda as podemos comprobar que semanas como a que foi 11 ao 17 de xu~no
foron das mais caras de 2012.
Agora que temos unha idea de cantos cluster podemos formar. Pasamos
a utilizar o comando kmeans.fd() do paquete fda.usc. Deixamos o uso deste
comando para o
73. car o numero
de cluster a priori. Polo que preferimos facer o anterior analise para ter unha
intuicion de cantos po~ner.
Mediante este comando obtemos as seguintes gra
74. cas, onde nos separa os
datos no numero de clusters especi
76. Notamos que a division e moi parecida a que obti~namos no caso do metodo
do veci~no mais lonxano. Conlumos pois que parece razoable separar os nosos
datos en tres grupos de prezos.
5.2. Clasi
79. cacion super-visada.
Neste contexto, o noso obxetivo e estimar a probabilidade a posteriori
de pertenencia a un grupo dunha nova observacion. E
dicir, asignaremos a nova
observacion ao grupo que maximice a devandita probabilidade.
Para este problema o paquete fda.usc ten implementadas varias opcions,
modelos lineales generalizados, modelos aditivos generalizados e modelos nucleo.
Neste apartado utilizaremos a modo de exemplo o metodo non parametrico por
nucleo de clasi
89. - SUMMARY -
-Probability of correct classification by group (prob.classification):
y
0 1
0.9767442 0.9404762
-Confusion matrix between the theoretical groups (by rows)
and estimated groups (by column)
0 1
0 210 5
1 5 79
-Vector of probability of correct classification
by number of neighbors (knn):
2 3 4 5 6 7 8 9 10
0.9632 0.9532 0.9632 0.9532 0.9666 0.9565 0.9565 0.9532 0.9599
-Optimal number of neighbors: knn.opt= 6
with highest probability of correct classification max.prob= 0.9665552
Vemos que o metodo clasi
91. n de semana, e en 5 das de semana dos 215 totais. Procedamos agora a
clasi
92. car os nosos datos a posteriori, que no noso caso seran os datos correspon-dentes
ao mes de novembro. Para elo usaremos o comando predict.classif() (que
para este tipo de clasi
93. cacion so e valido para dous factores), que nos dara a
seguinte informacion:
Das semana Das
94. n de semana
Prediccion 21 7
Se observamos os datos de novembro, observamos que temos oito das de
95. n
de semana. Polo tanto temos que o metodo fallou na clasi
96. cacion dun so dato
(4 %), que ademais coincide co primeiro sabado do mes de novembro. Notemos
que non temos 30 das, a que os dous primeiros datos do mes de novembro
decidimolos eliminar por falta de informacion na descritizacion.
22
97. Captulo 6
Anova
Como vimos en apartados anteriores, parece haber diferencias entre os datos
respecto das estacions (ver pag. 8), ou como podemos ver de seguido respecto
de das de semana a das non laborables:
Notamos como nos das de semana os prezos tenden a ser maior nas horas
diurnas, mentres que nas horas nocturnas tenden a ser mais caras nos das
de
98. n de semana ou das non laborables. Dado que nos parece observar certa
in
uencia destes dous factores, procederemos polo tanto a facer un test anova
para comprobar se podemos aceptar esta hipotese.
Para elo, crearemos duas variables factor. Unha delas sera a variable da que
nos indicara que das son das de semana e cales de
99. n de semana, sendo 0 para
luns,martes,mercores,xoves e venres e 1 para sabado, domingo. En canto a outra
variable, denotaranos que das pertencen a cada estacion. As o 1 sera o inverno,
2 a primavera, 3 o veran e 4 o outono.
23
100. Como estamos ante unha variable resposta funcional e duas variables expli-cativas
discretas, optaremos por facer un analise da varianza mediante o test
anova. Seguindo esta idea, utilizaremos o metodo proposto por Cuevas e Febre-ro,
e que esta implementado no paquete fda.usc do software R. Dentro deste
paquete temos a funcion anova.RPm. Ademais tamen poderemos indicarlle se
queremos utilizar o procedemento de bootstrap.
Nos procederemos utilizando bootstrap, e tendo en conta unha posible ite-racci
on entre as duas variables factor. Os resultados que obtemos podemolos ver
na seguinte taboa:
p-value for Bonferroni method
dia estacion dia:estacion
RP2 0 0 1
RP5 0 0 1
RP15 0 0 1
RP30 0 0 1
p-value for False Discovery Rate method
dia estacion dia:estacion
RP2 0 0 0.78727
RP5 0 0 0.96963
RP15 0 0 0.96963
RP30 0 0 0.68217
p-value for Bootstrap method
dia estacion dia:estacion
RP2 0 0 0.926
RP5 0 0 0.850
RP15 0 0 0.404
RP30 0 0 0.368
A vista dos resultados obtidos observamos que a iteracion non e signi
101. cativa
en ningun dos tres metodos. Mentres que tanto o da como a estacion si o e para
os tres.
Como para este test as hipotesis nulas son a inexistencia de in
uencia dos
factores, e a vista dos p-valores obtidos conlumos que non hai in
uencia da
iteracion entre das e estacions. Sen embargo si parece haber unha in
uencia
nos prezos debida a segundo a en que da ou estacion esteamos. In
uencia que
xa se previa na representacion dos datos feita anteriormente.
24
102. Captulo 7
Conclusions
Chegados a este punto e despois de ter revisado e traballado sobre a nosa
base de datos e o momento de tomar certas conclusions que se foron vendo ao
longo da redaccion do presente documento.
En primeiro notar que o ano 2012 non foi (en media), o ano mais caro dos
ultimos anos en canto a prezo de venta da enerxa electrica se re
103. re. Senon que
por exemplo o ano 2008 foi extraordinariamente mais elevado en prezos que os
demais. Anda as o prezo elevouse desde que se comezara liberalizar o mercado
da enerxa alo polo 1999.
Por outro lado notamos como a funcion de prezos parece diferencarse segundo
en que epoca esteamos (ver pag. 8). As por exemplo, a funcion media no veran
parece manterse mais estable mentres que a do inverno
uctua algo mais. Tamen
observamos que os prezos parecen ser menores no inverno que no veran en horas
da madrugada, mentres que pasa o contrario nas horas respectivas a tarde noite
(ver pag. 8). Isto pode ser a que a rutina de vida in
ua no mercado dos prezos.
Xa que durante o veran os das son mais longos e a necesidade de electricidade
e menor nesa franxa horaria. Mentres que no inverno xa e noite pechada e co
sumado gasto de calefactores.
Pero ademais de intuir esta diferencia entre as estacions, tamen obsevamos
cambios no comportamento das funcions respecto dos das de semana e dos das
de
104. n de semana. Onde o prezo tende a ser maior en case todas as franxas
horarias nos das laborables.
Este efecto contrastamolo co test anova, onde vimos que tanto a variable
factor que nos distingua entre das, como a variable que nos distingua entre
estacions saan signi
105. cativas. Polo que parece haber unha certa relacion entre
estas duas variables e o prezo de venta da enerxa electrica.
Neste informe non realizamos ningun modelo de regresion dado que a base
de datos coa que traballamos non se dispo~nia para tal efecto. Anda as, no
paquete fda.usc podense encontrar funcions para a realizacion deste tipo de
modelos: regresion non parametrica, regresion lineal generalizada,... e para a
sua validacion e uso para unha posterior prediccion.
25
106. Captulo 8
Comandos de R
Neste captulo expo~nemos os comandos utilizados durante todo o documento
e unha breve explicacion do mesmo. Todos eles son parte do software R e do
paquete fda.usc, polo que se pode obter axuda facilmente sobre eles na paxina
web.
8.1. Analise dos Datos
##Grafico datos
plot.fdata(obxeto fdata)
##Obtencion numero optimo de elementos da base
min.basis(obxeto fdata,numbasis=seq(4,16,6))
min.basis(obxeto fdata,type.basis=fourier,
+ numbasis=floor(seq(1,16,6)))
#co type.basis definimos na base que queremos traballar
##Creacion da base correspondente
bspl=create.bspline.basis(c(1,24),nbasis=10)
fou=create.fourier.basis(rangeval, nbasis) #para a base fourier
#Exemplo como crear un fdata, despois de aplicarlle a base b-spline
#neste caso
ener12.fd=Data2fd(argvals=time,y=t(ener12.fdata$data),basisobj=bspl)
ener12.fdata2=fdata(ener12.fd,argvals=time,
+names=list(main=Enerxa ano 2012,xlab=UTC,ylab=?/MWH))
dener12m-fdata.deriv(objeto fdata) #derivadas das nosas funcions
##Comandos estudio da profundidade
dmode=depth.mode(obxeto fdata,trim=.1,draw=TRUE)
dmode$lmed #danos o dato mais profundo
res=outliers.depth.trim(obxeto fdata)
26
107. res$outliers #danos os posibles outliers
#Para a grafica dos outliers usouse un plot.fdata e o comando line
#para cada un dos datos outlier
res$median #neste obxeto podemos encontrar a mediana
##medias e varianzas
func.mean(obxeto fdata)
func.var(obxeto fdata)
8.2. Bootstrap
##Remuestreo para a media
fdata.bootstrap(obxeto fdata,draw=TRUE,nb=300)
#para remuestrear outro estadistico especificariamolo
#na opcion statistic
##Remuestreo co criterio de Fraiman e Muniz
fdata.bootstrap(obxeto fdata,statistic=func.med.FM,draw=TRUE)
##Remuestreo para a media con suavizacion
fdata.bootstrap(obxeto fdata,draw=TRUE,nb=300)
#onde en nb definimos o numero de remuestreos
#punto critico (1-alpha) das distancias para pertencer ao intervalo
#considerando que gardamos en res.boot a saida do fdata.bootstrap
res.boot$dband
#Distancia da banda
summary(res.boot$rep.dist)
quantile(res.boot$res.dist,0.95)
8.3. Analise Compo~nentes Principais
##Obtencion e representacion das compo~nentes principais
res12.pca-pca.fd(obxeto fd,p)#onde p e o numeo d CP
plot(res12.pca$harmonics)
##obtencion dos scores e da varianza explicada
res12.pca$scores
res12.pca$varprop #proporcion varianza explicada
##Representacion do modelo
par(mfrow=c(2,2))
plot(res12.pca)
27
109. cacion
##Clasificacion non supervisada
#Tendo en conta que D e a matriz de distancias
hcsingle=hclust(D,method)
#en metodo seleccionamos o metodo a utilizar
print(rect.hclust(obxeto hclust,k))
#k e o numero de cortes que desexamos
##Clasificacion non supervisada co paquete fda.usc
resD=kmeans.fd(obxeto fdata,ncl) #ncl indicamos o numero de cortes
table(resD$cluster)
##Clasificacion Supervisada
out=classif.knn(variable factor,obxeto fdata,knn)
summary.classif(out)
pred=predict.classif(out,nuevos datos)
table(pred)
#recordar que para esta regra so serve con unha variable
#factor de so dous elementos
#outros comandos para a clasificacion supervisada
classif.np()
classif.kernel()
classif.glm() #modelo lineal generalizado
classif.gsam() #modelo aditivo generalizado
classif.gkam() #modelo aditivo nucleo generalizado
8.5. Anova
##Formulacion do modelo
# dia e estacion te~nen que ser variables factor. mdataf e un data.frame
# formado por estas duas variables. E datae, e a matriz de datos da nosaa
# base de datos
datae-as.data.frame(obxeto.fdata[[data]])
result5=anova.RPm(datae,~dia*estacion,mdataf,RP=RP,nboot=500)
#dia e estacion son variabeis factor.
summary.anova(result5)
28