Download as pdf or txt
Download as pdf or txt
You are on page 1of 21

A3 - Aproximació de funcions i

regressió
Data de publicació de les notes: 27/12/2019
CC-BY-SA • A3 - Aproximació de funcions i regressió

Índice

Descripció del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1. Exercicis proposats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1. Calentament global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2. Identificar estacionalitat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3. Influència de la precipitació i les hores de sol en la temperatura. . . . . . 14
1.4. Variació diària de temperatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
CC-BY-SA • 5 A3 - Aproximació de funcions i regressió

Descripció del problema

El clima i la meteorologia són objectes d’estudi molt importants ja que afecten direc-
tament al desenvolupament de les activitats d’una societat. El seu tractament es basa
a analitzar els diferents fenòmens meteorològics que són observables i mesurables. És
evident que aquests fenòmens estan fortament relacionats entre ells, comptant amb un
gran component estacional. Aquestes característiques impliquen que el seu tractament
matemàtic sigui altament complex.

Les agències de meteorologia han estat recaptant dades de diversos fenòmens en els
últims temps. Per tant, una gran quantitat d’informació heterogènia està disponible
públicament per al seu tractament. Basada en ella es poden desenvolupar models es-
tadístics que expliquin el comportament històric d’aquests fenòmens, així com simular
i predir possibles escenaris futurs.

Disposeu de dades històriques de mesuraments de diversos fenòmens des del 01/01/1926


fins al 31/12/2018. En particular, per a aquesta activitat s’utilitzen les dades recolli-
des en l’estació meteorològica de Barcelona, Fabra. Se us proporciona el fitxer 0200E-
19200101-20181231.csv. Els dies (amb dades disponibles) es numeraran de manera
absoluta, ascendent i consecutiva, sent el dia 01/01/1926 el dia 1. Per importar les
dades se us proporciona un script de R, que facilita la correcta lectura (per data) del
fitxer anterior.
CC-BY-SA • 6 A3 - Aproximació de funcions i regressió

1. Exercicis proposats
.

1.1. Calentament global

L’estudi del canvi climàtic es basa en l’anàlisi dels canvis en els patrons en els diferents
fenòmens meteorològics. L’escalfament global és un fet científicament contrastat. A
l’últim segle la temperatura del planeta ha pujat considerablement.

1) Es demana realitzar una anàlisi de la tendència seguida per les temperatures


màxima, mínima i mitjana. Quin model és el més adequat? Justificar. Representar
gràficament. Es confirma l’augment de temperatura?

2) Segons la tendència observada, quant han variat les temperatures (màxima, mí-
nima i mitjana) des de l’inici de la sèrie històrica (1/1/1926) fins avui (31/12/2018)
a Barcelona?

3) Si se segueix la mateixa tendència, quant serà l’augment de temperatures (màxi-


ma, mínima i mitjana) l’any 2100 (dia 63554)?

Per a aquest apartat s’han d’implementar tots els algorismes necessaris per
a la seva resolució. En cas de ser necessari, es poden utilitzar els algorismes
implementats en les activitats anteriors. Les etiquetes per a la lectura de les
temperatures màxima, mínima i mitjana són ‘TMAX’, ‘TMIN’ i ‘TMEDIA’,
respectivament.

Solució Exercici 1.1

1) La tendència s’analitza perfectament mitjançant una línia recta. Per això, un


model de regressió lineal és suficient per resoldre aquest apartat. Els coeficients es
poden calcular resolent el sistema d’equacions normals o, directament mitjançant les
solucions obtingudes a la pàgina 34 de la guia.

Sistema d’equacions normals (temperatura màxima):

33965c0 + 576827595c1 = 630633,8

576827595c0 + 1,306149 · 1013 c1 = 1,093760 · 1010


CC-BY-SA • 7 A3 - Aproximació de funcions i regressió

Solució:

c0 = 17,38365, c1 = 6,968843 · 10−5 .

Sistema d’equacions normals (temperatura mínima):

33954c0 + 576454035c1 = 507278,2

576454035c0 + 1,304881 · 1013 c1 = 8792010156,7

Solució:

c0 = 10,61455, c1 = 4,114361 · 10−5 .

Sistema d’equacions normals (temperatura mitjana):

33951c0 + 576352176c1 = 507278,2

576352176c0 + 1,304535 · 1013 c1 = 8792010156,7

Solució:

c0 = 14,00213, c1 = 5,533418 · 10−5 .

Per a la representació gràfica es poden utilitzar els comandos de R, plot i/o lines. En
les següents gràfiques (temperatura màxima) s’observa perfectament una tendència
alcista:
40
30
20
t

10
0

0 5000 10000 15000 20000 25000 30000 35000

Figura 2: Tendència sobre les dades de temperatura (màxima) diària.


CC-BY-SA • 8 A3 - Aproximació de funcions i regressió

17.5 18.0 18.5 19.0 19.5


t

0 5000 10000 15000 20000 25000 30000 35000

Figura 4: Tendència de temperatura (màxima) diària.

2) Bastaria amb avaluar el model de regressió obtingut (determinat pels coeficients


c0 i c1 ) en els dies inicial i final de la sèrie, i calcular la seva diferència. Si denotem
per Dm el dia final i per ∆t la variació de temperatura, tindríem

∆t := fˆ(Dm ) − fˆ(1) = c0 + c1 Dm − (c0 + c1 ) = c1 (Dm − 1).

Les solucions són: ∆t = 2,366898 (màxima), ∆t = 1,396949 (mínima) i ∆t = 1,878595


(mitjana). Les temperatures (màxima, mínima i mitjana) des de l’inici de la sèrie
històrica (1/1/1926) fins avui (31/12/2018) a Barcelona han sofert una variació apro-
ximada de 2,4, 1,4 i 1,9 graus, respectivament.

3) Igual que l’apartat anterior, aquest apartat es resol avaluant l’aproximació obtin-
guda en el valor d’interès, això és, fˆ(63554). Les solucions són: 21,81263 (màxima),
13,22939 (mínima) i 17,51884 (mitjana)

Codi R

# ###### Funcions auxiliars #######


source ( ’ Lectura _ datos _ por _ fecha . R ’)

myPhi = function (x , n ){

Phi = matrix ( 1 , length ( x ) , n + 1 )


for ( i in 1 : n ) {
Phi [ , i + 1 ] = x ^ i
}
return ( Phi )

mylssolve = function (A , b ){

AT = t ( A )
CC-BY-SA • 9 A3 - Aproximació de funcions i regressió

return ( solve ( AT %* %A , AT %* %b ))

mypolyfit = function (x , y , n ){

Phi = myPhi (x , n )

c = mylssolve ( Phi , y )
return ( c )

myeval = function (x , c ){

f = 0
for ( i in 1 : length ( c )) {
f = f + c [ i ]* x ^( i - 1 )
}
return ( f )
}

# ###### Tendencia de temperatures #######

# ## Lectura de dades
Temp = ’ TMAX ’
# Temp = ’ TMIN ’
# Temp = ’ TMEDIA ’
t = myReadData _ byDate ( ’0 2 0 0E - 1 9 2 0 0 1 0 1 -2 0 1 8 1 2 3 1 . csv ’ , ’0 1 / 0 1 / 1 9 2 6 ’ , ’3 1 / 1 2 / 2 0 1 8 ’ , Temp )
m = length ( t )
D = 1:m

# ## Apartat 1
n = 1

# # Equacions normals
c = mypolyfit (D , t , n )
print ( c )

# # Formules pagina 3 4
c _ 1 = ( m * sum ( t * D ) - sum ( D )* sum ( t ))/( m * sum ( D ^ 2 ) - sum ( D )^ 2 )
c _ 0 = mean ( t ) - c _ 1 * mean ( D )

# # Representacio grafica
plot (D , t )
lines (D , myeval (D , c ) , col = ’ red ’ , lwd = 3 , ylab = ’t ’)
plot (D , myeval (D , c ) , col = ’ red ’ , ylab = ’t ’)

# ## Apartat 2
Variation = c _ 1 *( m - 1 )
print ( Variation )

# ## Apartat 3
D _ Jan _ 1 _ 2 1 0 0 = 6 3 5 5 4
print ( myeval ( D _ Jan _ 1 _ 2 1 0 0 , c ))

1.2. Identificar estacionalitat

Donades les temperatures diàries de diversos anys, es pot observar un patró repetit
que es correspon amb les estacions de l’any. Les temperatures són més altes a l’estiu,
més baixes a l’hivern i moderades a la primavera i tardor. Comptar amb un model que
identifica les variacions estacionals de temperatura pot ser molt útil per a diferents
àmbits científics i socials com, per exemple, l’evolució de les espècies o el consum
CC-BY-SA • 10 A3 - Aproximació de funcions i regressió

d’energia.

1) Heu de proposar i ajustar diversos models (almenys dos) d’aproximació per iden-
tificar l’estacionalitat dins d’un any basat en les temperatures mitjanes. Justificar la
seva elecció. Es prendran les dades de l’últim any disponible, des de l’1/1/2018 al
31/12/2018.

2) Representar gràficament sobre les dades originals els ajustos obtinguts mitjançant
els models proposats.

3) Determinar el millor model sobre la base del càlcul del coeficient de determinació
r2 .

4) Repetir els apartats anteriors amb dades dels últims 3 anys i dels últims 10 anys.
S’ha de tenir en compte que les estacions es repeteixen amb periodicitat d’un any.

En cas de considerar regressió lineal i/o polinòmica, s’ha d’utilitzar la instruc-


ció de R lsfit per al càlcul dels coeficients.

Solució Exercici 1.2

1) Les estacions es reprodueixen periòdicament pel que el model més adequat és el


de polinomis trigonomètrics, les bases dels quals són funcions periòdiques. Utilitzant
aquesta opció, els coeficients es poden calcular directament aplicant l’equació (17) de
la guia, en el cas discret. L’expressió de xα es presenta en l’equació (16) del mateix
document.

Una vegada obtinguts els coeficients, s’utilitzen juntament amb les bases exponencials
per construir una funció que és capaç d’identificar les estacions.

A manera d’exemple es considera un model de polinomis trigonomètrics amb n = 1 (3


termes). Els coeficients resultants són c−1 = −2,441495 − 3,463071i, c0 = 16,339178
i c1 = −2,441495 + 3,463071i.

2) Representat la funció obtinguda avaluada en els punts xα s’observa un ajust pràc-


ticament perfecte, com es pot veure en la gràfica següent:
CC-BY-SA • 11 A3 - Aproximació de funcions i regressió

10 15 20 25 30
t

5
0

35800 35900 36000 36100

Figura 6: Ajust de l’estacionalidad mitjançant polinomis trigonomètrics.

3) S’ha d’utilitzar la fórmula de l’equació (22) de la guia, on necessitem les quantitats


St i Sr . Seguint amb l’exemple anterior

m
(ti − t̄)2 ) = 15852,09
X
St =
i=0

 
m
X n
X
Sr = ti − cj exp (ijxα ) = 2745,84,
i=0 j=−n

on recordem que t̄ denota la mitjana aritmètica de les mostres de temperatura i ti


són cadascuna de les mostres. Llavors, el coeficient de determinació en aquest cas és

St − Sr
r2 = = 0,8267833,
St

el que confirma que l’ajust proporcionat pel model triat és bo.

4) Quan es consideren períodes de més d’un any, l’expressió de xα ha de ser adaptada,


a causa que sabem que les estacions són periòdiques amb període d’un any. Així, la
fórmula seria

2πα
xα = ,
M/Y

on Y és el nombre d’anys considerats (1, 3 o 10). Pel que fa a la fórmula original


s’introdueix el paràmetre Y que estableix la periodicitat de les dades.

Considerant el mateix model de l’exemple, els coeficients obtinguts són: c−1 = −3,698321−
1,33269i, c0 = 16,408942 i c1 = −3,698321 + 1,33269i per a 3 anys (Y = 3); i
c−1 = −3,332487 − 2,218932i, c0 = 16,170099 i c1 = −3,332487 + 2,218932i per a 10
anys (Y = 10).

Las gràfiques resultants:


CC-BY-SA • 12 A3 - Aproximació de funcions i regressió

10 15 20 25 30
t

5
0

35200 35400 35600 35800 36000 36200

Figura 8: Ajust de l’estacionalidad (3 anys) mitjançant polinomis trigonomètrics.


10 15 20 25 30
t

5
0

33000 34000 35000 36000

Figura 10: Ajust de l’estacionalidad (10 anys) mitjançant polinomis trigonomètrics.

Calculant els coeficients de determinació s’ha de r2 = 0,8075603 i r2 = 0,8023263 per


3 anys i 10 anys, respectivament. De nou, l’ajust mitjançant polinomis trigonomètrics
resulta satisfactori.

Qualsevol dels altres models vists en aquest curs resultarien en un ajust de les dades
pitjor, és a dir, amb un coeficient de determinació més proper a zero. En el gràfica
següent es compara (per 1 any) l’ajust per polinomis trigonomètrics amb un ajust per
regressió polinòmica.
CC-BY-SA • 13 A3 - Aproximació de funcions i regressió

30
25
20
15
t

10
5
0

35800 35900 36000 36100

Figura 12: Ajust de l’estacionalidad mitjançant regressió polinòmica.

El coeficient de determinació obtingut amb regressió polinòmica és r2 = 0,6336804,


molt inferior a l’obtingut mitjançant polinomis trigonomètrics.

Codi R

# ###### Funcions auxiliars #######


source ( ’ Lectura _ datos _ por _ fecha . R ’)

myPhi = function (x , n ){

Phi = matrix ( 1 , length ( x ) , n + 1 )


for ( i in 1 : n ) {
Phi [ , i + 1 ] = x ^ i
}
return ( Phi )

myeval = function (x , c ){

f = 0
for ( i in 1 : length ( c )) {
f = f + c [ i ]* x ^( i - 1 )
}
return ( f )
}

# ###### Estacionalitat #######

# ## Lectura de dades
t = myReadData _ byDate ( ’0 2 0 0E - 1 9 2 0 0 1 0 1 -2 0 1 8 1 2 3 1 . csv ’ , ’0 1 / 0 1 / 2 0 1 8 ’ , ’3 1 / 1 2 / 2 0 1 8 ’ , ’ TMEDIA ’)
m = length ( t )

# Dias presos de forma relativa ( seleccionar el parametre Y adequat )


# D = 1:m
# Y = 1

# Dias presos de forma absoluta


D = 35797:36161; Y = 1
# D = 35066:36161; Y = 3
# D = 32510:36161; Y = 10
CC-BY-SA • 14 A3 - Aproximació de funcions i regressió

# ## Models

# # Regressio polinomica
n = 3
lout = lsfit ( myPhi (D , n ) , t )
c = lout [[ 1 ]]
print ( c )

# # Regressio trigonometrica
xalpha = 2 * pi * D /( m / Y );

n = 1

cF = matrix ( 1 , 2 * n + 1 , 1 )
f = 0
for ( j in -n : n ) {
cF [ n + j + 1 ] = sum ( t * exp ( - 1 i * j * xalpha ))/ m
f = f + cF [ n + j + 1 ]* exp ( 1 i * j * xalpha )
}
print ( cF )

# ## Representacio grafica
plot (D , t )
# # Regressio polinomica
lines (D , myeval (D , c ) , col = ’ red ’ , lwd = 3 )
# # Regressio trigonometrica
lines (D , f , col = ’ green ’ , lwd = 3 )

# ## Coeficient de determinacio
St = sum (( t - mean ( t ))^ 2 )

# # Regressio polinomica
Sr = sum (( t - myeval (D , c ))^ 2 )
r 2 = ( St - Sr )/ St
print ( r 2 )

# # Regressio trigonometrica
Sr = sum (( t - f )^ 2 )
r 2 = ( St - Sr )/ St
print ( r 2 )

1.3. Influència de la precipitació i les hores de sol en la temperatura

Els fenòmens meteorològics solen estar fortament relacionats entre ells, influint uns en
uns altres amb diferent intensitat. Per exemple, per explicar la temperatura diària es
podria pensar que està influenciada per les hores de sol i per la precipitació. Desitgem
estudiar l’impacte que han tingut aquests dos factors en la temperatura mitjana diària
de l’últim any (2018).

1) Es demana seleccionar el model adequat per resoldre el problema proposat, justi-


ficant la seva elecció.

2) Realitzar un ajust mitjançant el model triat que ajudi a determinar el grau


d’influència de les hores de sol i de la precipitació en la temperatura mitjana dià-
ria. Quin fenomen és més influent en la temperatura? En què mesura?

3) Predir la temperatura mitjana d’un dia en el qual hem tingut 6 hores de llum i
20 mm de precipitació.
CC-BY-SA • 15 A3 - Aproximació de funcions i regressió

S’ha de comprovar que el resultat obtingut és correcte mitjançant la instrucció


de R lm. Les etiquetes per a la lectura dels valors d’hores de sol i precipitació
són ‘SOL’ i ‘PRECIPITACION’, respectivament.

Solució Exercici 1.3

1) L’únic model vàlid (dels vists en el curs) és el de regressió lineal múltiple, ja que
es vol explicar la dependència d’una variable (temperatura) respecte a altres dues
(hores de sol i precipitació). Com es tenen dues variables explicatives, llavors n = 2.

2) La influència de les variables es pot determinar pels coeficients que les multipli-
quen, que poden veure’s com a pesos que estableixen la importància de la variable a la
qual acompanyen. El coeficient lliure, c0 indica el component independent o intrínsec
associat a la variable estudiada, en aquest cas la temperatura. Si considerem que el
coeficient c1 es correspon amb les hores de sol i el coeficient c2 amb la precipitació,
el resultat de l’ajust amb les dades de 2018 és

c0 = 9,47765 c1 = 0,90869 c2 = 0,02786.

Observant els coeficients concloem que la temperatura té un component intrínsec de


gairebé 9,5 graus, que la precipitació amb prou feines influeix (molt feblement de forma
positiva) i que cada hora de sol implica gairebé un grau (0,9) més de temperatura.

3) N’hi ha prou amb avaluar el model de regressió ajustat amb els valors de les
variables proposats,

Temperatura = c0 + c1 (Precipitació) + c2 (Horas de Sol)

= 9,47765 + 0,90869 · 6 + 0,02786 · 20 = 15,48712

Codi R

# ###### Funcions auxiliars #######


source ( ’ Lectura _ datos _ por _ fecha . R ’)

myPhi = function (x , n ){

Phi = matrix ( 1 , length ( x ) , n + 1 )


for ( i in 1 : n ) {
Phi [ , i + 1 ] = x ^ i
}
return ( Phi )

}
CC-BY-SA • 16 A3 - Aproximació de funcions i regressió

mylssolve = function (A , b ){

AT = t ( A )
return ( solve ( AT %* %A , AT %* %b ))

mypolyfit = function (x , y , n ){

Phi = myPhi (x , n )

c = mylssolve ( Phi , y )
return ( c )

# ###### Influencia d ’ altres factors #######

# ## Lectura de dades
t = myReadData _ byDate ( ’0 2 0 0E - 1 9 2 0 0 1 0 1 -2 0 1 8 1 2 3 1 . csv ’ , ’0 1 / 0 1 / 2 0 1 8 ’ , ’3 1 / 1 2 / 2 0 1 8 ’ , ’ TMEDIA ’)
sol = myReadData _ byDate ( ’0 2 0 0E - 1 9 2 0 0 1 0 1 -2 0 1 8 1 2 3 1 . csv ’ , ’0 1 / 0 1 / 2 0 1 8 ’ , ’3 1 / 1 2 / 2 0 1 8 ’ , ’ SOL ’)
prec = myReadData _ byDate ( ’0 2 0 0E - 1 9 2 0 0 1 0 1 -2 0 1 8 1 2 3 1 . csv ’ , ’0 1 / 0 1 / 2 0 1 8 ’ , ’3 1 / 1 2 / 2 0 1 8 ’ , ’ PRECIPITACION ’)
m = length ( t )

# ## Regressio multiple
Phi = matrix ( 1 , m , 3 )
Phi [ , 2 ] = sol
Phi [ , 3 ] = prec

c = mylssolve ( Phi , t )
print ( c )

# # Comprovacio
lm ( formula = t ~ sol + prec )

# ## Prediccio
hsol = 6
mm = 2 0
print ( c [ 1 ] + c [ 2 ]* hsol + c [ 3 ]* mm )

1.4. Variació diària de temperatura

Una de les prediccions meteorològiques més utilitzades en la pràctica és la variació de


temperatura que es produeix entre dos dies consecutius. En aquesta situació, l’efecte
de l’estacionalitat es dilueix ja que no es consideren les temperatures absolutes sinó
la diferència entre elles. En aquest exercici es pretén obtenir les probabilitats que la
variació tèrmica entre dos dies es trobi en determinades situacions d’interès. Per a això
seria molt útil realitzar una aproximació o estimació (basada en les dades històriques)
de la funció de densitat de la variable aleatòria de variació de temperatures. Com s’ha
vist en la guia, una funció qualsevol es pot aproximar per

n
X
f (x) ≈ fˆ(x) = cj φj (x),
j=0
CC-BY-SA • 17 A3 - Aproximació de funcions i regressió

on, si les funcions base φj (x) són ortogonals (com seria en aques cas), els coeficients,
cj , es calculen mitjaçant les expressions

hf, φj i
cj = , j = 0, 1, 2, . . . , n.
hφj , φj i

El càlcul del denominador, hφj , φj i, ve determinat per les bases seleccionades (veure
guia de l’activitat). El numerador, hf, φj i, es pot obtenir aplicant la definició de
producte escalar,

Z x2
hf, φj i = f (x)φj (x)w(x)dx,
x1

on, com és aquest cas f és una funció de densitat, es té la igualtat

Z x2  
hf, φj i = f (x)φj (x)w(x)dx = E φj (X)w(X) ,
x1

sent X una variable aleatòria. Donades mostres d’una variable aleatòria, Xi , i =


1, 2, . . . , m, l’esperança matemàtica es pot aproximar mitjançant la mitjana aritmètica
de les mostres

m
  1 X
E φj (X)w(X) ≈ φj (Xi )w(Xi ).
m
i=1

La funció de distribució es pot calcular (aproximar) sobre la base de la funció de


densitat, aplicant la seva definició en forma integral,

Z t Z t
F (t) := f (x)dx ≈ fˆ(x)dx,
−∞ tmı́n

on tmı́n és el valor mínim de les mostres donades. En el segon pas s’ha utilitzat
l’aproximació de la funció de densitat obtinguda anteriorment.

1) Utilitzar tota la sèrie històrica per generar mostres de la variable aleatòria de


variació de temperatura mitjana en un dia. S’han de mostrar els valors de les mostres
corresponents als deu últims dies.

2) Basant-se en la mostres de la variable aleatòria obtingudes a l’apartat anterior,


aproximar la funció de densitat corresponent mitjançant les dues classes de polino-
mis ortogonals vists en el curs: Legendre i Chebyshev. Com les mostres de l’apartat
anterior no estaran en el domini d’aplicació dels polinomis ortogonals, serà necessari
realitzar un canvi de variables per a la seva utilització.

3) Augmentar progressivament el grau dels polinomis (fins a n = 20). Representar les


solucions obtingudes sobre un histograma basat en les dades, per observar la millora
CC-BY-SA • 18 A3 - Aproximació de funcions i regressió

en l’aproximació en augmentar el grau. Presentar una gràfica per a cada classe de


polinomis.

4) Utilitzar un mètode d’integració numèrica (activitat 2) per resoldre la integral


involucrada en l’expressió de la funció de distribució i obtenir una solució per a la
mateixa. Utilitzar-la per calcular les següents probabilitats:

• Probabilitat que la temperatura disminueixi almenys 2 graus en un dia.

• Probabilitat que la temperatura variï menys de 5 graus d’un dia al següent.

• Probabilitat que la temperatura de demà sigui almenys 3 graus major que la


d’avui.

Considerar les dues classes de polinomis ortogonals, Legendre i Chebyshev, comparant


els resultats obtinguts amb cadascun d’ells.

Utilitzar la instrucció de R hist per a les representacions demanades a l’apartat


3. A l’apartat 4 es pot utilitzar la instrucció de R integrate per comprovar el
correcte funcionament del codi d’integració numèrica utilitzat.

Solució Exercici 1.4

1) Per obtenir mostres de la variació de temperatura en un dia a partir de la sè-


rie històrica s’ha de restar la temperatura d’un dia donat menys la temperatura de
l’anterior.

∆ti = ti − ti−1 , i = 2, . . . , m.

Si el nombre de dies és m, s’obtenen m−1 mostres de variacions. La sèrie donada con-


té 33951 dies amb temperatura mitjana registrada, per la qual cosa es generen 33950
mostres de variacions. Les últimes deu mostres són [3,0, 0,9, 0,0, −2,7, −1,8, −0,4, −0,5, −1,6, 4,0, 3,4]
(obtingudes amb el comando tail de R).

2) El canvi de variable necessari es duu a terme com s’especifica a la pàgina 22 de la


guia,

1 1
t= (a + b) + (b − a)x, t ∈ [a, b] ↔ x ∈ [−1, 1],
2 2

on, com es vol treballar en l’interval [−1, 1], es necessita aïllar la variable x de la
forma,

2t − a − b 2t − a
x= = − 1, t ∈ [a, b] ↔ x ∈ [−1, 1].
b−a b−a
CC-BY-SA • 19 A3 - Aproximació de funcions i regressió

A més s’ha de calcular la derivada de x, dx, que apareix en el càlcul del producte
escalar,

2
dx = . (1)
b−a

Els paràmetres a i b determinen el domini de les variacions de temperatures, per la


qual cosa han de prendre els valors de la mínima i màxima variació, respectivament,
això és a = mı́n ∆ti i b = máx ∆ti . Quan s’utilitzen els polinomis de Txebixev això
produeix una indeterminació, en aparèixer una divisió per zero en l’avaluació de la
funció de pes, w(x). Per corregir aquest fet, s’ha de realitzar un ajust artificial de
la forma, a = mı́n ∆ti − ǫ i b = máx ∆ti + ǫ, sent ǫ una quantitat petita (10−3 , per
exemple). Així s’evita la divisió per zero.

Una vegada fet el canvi de variables, els coeficients es calculen mitjançant l’estimació
de l’esperança de les bases pels pesos, que s’aproxima per la mitjana aritmètica, com
es mostra en l’explicació de l’exercici. Per a n = 5, els coeficients obtinguts utilitzant
Legendre són

c0 = 0,04974629,

c1 = 0,02895549,

c2 = −0,09861195,

c3 = −0,08137437,

c4 = 0,07218906,

c5 = 0,10789783,

mentre que utilitzant Txebixev es té

c0 = 0,03306084

c1 = 0,01273917

c2 = −0,05694631

c3 = −0,03232047

c4 = 0,03490883

c5 = 0,03826445.

3) En les figures següents veiem les aproximacions per a n = 5 (verda), n = 10


CC-BY-SA • 20 A3 - Aproximació de funcions i regressió

(blava) i n = 20 (vermell), per als polinomis de Legendre i Txebixev, respectivament:

Histogram of diff_t
0.3
0.2
Density

0.1
0.0
−0.1

−10 −5 0 5

diff_t

Figura 14: Aproximació de la densitat mitjançant els polinomis de Legendre.

Histogram of diff_t
0.3
0.2
Density

0.1
0.0
−0.1

−10 −5 0 5

diff_t

Figura 16: Aproximació de la densitat mitjançant els polinomis de Txebixev.

Per a grau n = 20 l’aproximació ja es considera suficientment bona.

4) Les probabilitats demanades es poden calcular a partir de la funció de distribució


o, com en aquest cas, d’una aproximació de la mateixa. Recordem que

P (X≤x)=F (x),

P (x1 <X<x2 )=F (x2 )−F (x1 ),

P (X>x)=1−F (x).
CC-BY-SA • 21 A3 - Aproximació de funcions i regressió

Per a n = 20 els resultats són:

• Probabilitat que la temperatura disminueixi almenys 2 graus en un dia: 0,1252568


(Legendre) i 0,1275423 (Txebixev).

• Probabilitat que temperatura variï menys de 5 graus d’un dia al següent: 0,989483
(Legendre) i 0,9949864 (Txebixev).

• Probabilitat que la temperatura de demà sigui almenys 3 graus major que la


d’avui: 0,03241763 (Legendre) i 0,02463416 (Txebixev).

Codi R

# ###### Funcions auxiliars #######


source ( ’ Lectura _ datos _ por _ fecha . R ’)

my _ legendre = function (x , n ){

m = length ( x )

L = matrix ( 1 , n + 1 , m )
if ( n > 0 )
L[2, ] = x

if ( n > 1 )
for ( k in 1 :( n - 1 ))
L [ k + 2 , ] = (( 2 * k + 1 )/( k + 1 ))* x * L [ k + 1 , ] - ( k /( k + 1 ))* L [k , ]

return ( L )
}

myf _ Legendre = function (x , ck ){

y = 2 *(( x - a )/( b - a )) - 1
Ly = my _ legendre (y , n )

return ( colSums ( ck * Ly ))
}

my _ chebyshev = function (x , n ){

m = length ( x )

T = matrix ( 1 , n + 1 , m )
if ( n > 0 )
T[2, ] = x

if ( n > 1 )
for ( k in 1 :( n - 1 ))
T [ k + 2 , ] = 2 * x * T [ k + 1 , ] - T [k , ]

return ( T )
}

myf _ Chebyshev = function (x , ck ){

y = 2 *(( x - a )/( b - a )) - 1
Ty = my _ chebyshev (y , n )

return ( colSums ( ck * Ty ))
}
CC-BY-SA • 22 A3 - Aproximació de funcions i regressió

# ###### Variacio de temperatura #######

# ## Lectura de dades
t = myReadData _ byDate ( ’0 2 0 0E - 1 9 2 0 0 1 0 1 -2 0 1 8 1 2 3 1 . csv ’ , ’0 1 / 0 1 / 1 9 2 6 ’ , ’3 1 / 1 2 / 2 0 1 8 ’ , ’ TMEDIA ’)
m = length ( t )

# ## Generar mostres de variacio


diff _ t = ( t [ 2 : m ] - t [ 1 :m - 1 ])
a = min ( diff _ t )
b = max ( diff _ t )
h = 0.001
a = a - h
b = b + h

# ## Aproximar densitat
n = 20

# # Polinomis de Legendre
y = 2 *(( diff _ t - a )/( b - a )) - 1

Ly = my _ legendre (y , n )
Ak = 2 /( 2 *( 0 : n ) + 1 )
ckL = ( 2 /( b - a ))* rowMeans ( Ly )/ Ak

# # Polinomis de Txebixev
y = 2 *(( diff _ t - a )/( b - a )) - 1

Ty = my _ chebyshev (y , n )
Ak = rep ( 0 . 5 * pi , n + 1 )
Ak [ 1 ] = pi
ckT = ( 2 /( b - a ))* rowMeans ( Ty / sqrt ( 1 - y ^ 2 ))/ Ak

# ## Representacions grafiques
hh = 0 . 0 1
xx = seq (a , b , hh )
fL = myf _ Legendre ( xx , ckL )
fT = myf _ Chebyshev ( xx , ckT )

hist ( diff _t , freq = FALSE , ylim = c ( - 0 . 1 ,0 . 3 ))


lines ( xx , fL , col = ’ red ’ , lwd = 3 )
lines ( xx , fT , col = ’ darkblue ’ , lwd = 3 )

# ## Calcular probabilitats
# # Probabilitat que la temperatura disminueixi almenys 2 grados en un dia .
xp = -2 . 0
print ( integrate ( myf _ Legendre , a , xp , ckL )$ value )
print ( integrate ( myf _ Chebyshev , a , xp , ckT )$ value )

# # Probabilitat que temperatura varii menys de 5 graus .


xp 1 = -5 . 0
xp 2 = 5 . 0
print ( integrate ( myf _ Legendre , a , xp 2 , ckL )$ value - integrate ( myf _ Legendre , a , xp 1 , ckL )$ value )
print ( integrate ( myf _ Chebyshev , a , xp 2 , ckT )$ value - integrate ( myf _ Chebyshev , a , xp 1 , ckT )$ value )

# # Probabilitat que la temperatura de dema sigui almenys 3 graus major que la d ’ avui .
xp = 3 . 0
print ( 1 - integrate ( myf _ Legendre , a , xp , ckL )$ value )
print ( 1 - integrate ( myf _ Chebyshev , a , xp , ckT )$ value )

You might also like