Professional Documents
Culture Documents
Sol Activitat 3
Sol Activitat 3
regressió
Data de publicació de les notes: 27/12/2019
CC-BY-SA • A3 - Aproximació de funcions i regressió
Índice
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ó
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.
1. Exercicis proposats
.
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.
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?
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ó:
Solució:
Solució:
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
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
myPhi = function (x , n ){
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 )
}
# ## 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 ))
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.
Una vegada obtinguts els coeficients, s’utilitzen juntament amb les bases exponencials
per construir una funció que és capaç d’identificar les estacions.
10 15 20 25 30
t
5
0
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
St − Sr
r2 = = 0,8267833,
St
2πα
xα = ,
M/Y
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).
10 15 20 25 30
t
5
0
5
0
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
Codi R
myPhi = function (x , n ){
myeval = function (x , c ){
f = 0
for ( i in 1 : length ( c )) {
f = f + c [ i ]* x ^( i - 1 )
}
return ( f )
}
# ## 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 )
# ## 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 )
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).
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ó
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
3) N’hi ha prou amb avaluar el model de regressió ajustat amb els valors de les
variables proposats,
Codi R
myPhi = function (x , n ){
}
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 )
# ## 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 )
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
Z x2
hf, φj i = f (x)φj (x)w(x)dx = E φj (X)w(X) ,
x1
m
1 X
E φj (X)w(X) ≈ φj (Xi )w(Xi ).
m
i=1
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.
∆ti = ti − ti−1 , i = 2, . . . , m.
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
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,
c0 = 0,03306084
c1 = 0,01273917
c2 = −0,05694631
c3 = −0,03232047
c4 = 0,03490883
c5 = 0,03826445.
Histogram of diff_t
0.3
0.2
Density
0.1
0.0
−0.1
−10 −5 0 5
diff_t
Histogram of diff_t
0.3
0.2
Density
0.1
0.0
−0.1
−10 −5 0 5
diff_t
P (X≤x)=F (x),
P (X>x)=1−F (x).
CC-BY-SA • 21 A3 - Aproximació de funcions i regressió
• Probabilitat que temperatura variï menys de 5 graus d’un dia al següent: 0,989483
(Legendre) i 0,9949864 (Txebixev).
Codi 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 )
}
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 )
}
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ó
# ## 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 )
# ## 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 )
# ## 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 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 )