Está en la página 1de 8

FACULTAD DE CIENCIAS ECONOMICAS Y EMPRESARIALES

CURSO: TEMAS DE ESTADISTICA Y SERIES TEMPORALES

TAREA
TAREA N°4

El servicio de estudios de un banco pretende elaborar un modelo de regresión lineal con el que
explicar el nivel de consumo mensual medio por familia en términos nominales (𝐷𝑡 ) a través de
su renta mensual media, también en términos nominales (𝑌𝑡 ) y el índice de precios de consumo
(𝑃𝑡 ).
Con esta intensión decide estimar el modelo:
𝐷𝑡 = 𝛼0 + 𝛼1 𝑌𝑡 + 𝛼2 𝑃𝑡 + 𝑢𝑡
Donde el termino 𝑢𝑡 es el termino de error. Para ello dispone de 50 observaciones muestrales
generadas desde enero de 1986 hasta febrero de 1990 de la tabla 1(tarea 1).
Supongamos que 𝑉𝑎𝑟(𝑢𝑡 ) = 𝜎 2 𝑢 𝑌 𝛾 𝑡 y 0 < 𝛾 ≤ 3. Estima los parámetros 𝛾, 𝛼0 , 𝛼1 , 𝛼2 𝑦 𝜎 2 𝑢
por MV mediante un método de búsqueda sobre el posible recorrido de 𝛾 2 y después utilizando
el comando optimize. Compara ambos resultados obtenidos.
 ESTIMACION SIN HETEROCEDASTICIDAD
A. ESTIMAMOS DE LOS PARÁMETROS POR MCO
Los estimadores:
𝛼̂ = (𝑋 ′ 𝑋)−1 𝑋′𝑌
datos<-read.table("Dat_tar1.txt")
dim(datos)
attach(datos)
datos[1:4,]
consumo <-V1
renta <-V2
precios <-V3
const <- rep(1,length(consumo))
regresion1 <- lm(consumo ~ renta + precios)
summary(regresion1)

Call:
lm(formula = consumo ~ renta + precios)

Residuals:
Min 1Q Median 3Q Max
-13.5839 -2.8529 0.2416 2.6791 10.2060

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 51.1359 29.7030 1.722 0.0917 .
renta 0.7226 0.0698 10.352 1.03e-13 ***
precios -0.3342 0.3640 -0.918 0.3633
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 4.651 on 47 degrees of freedom


Multiple R-squared: 0.9853, Adjusted R-squared: 0.9847
F-statistic: 1574 on 2 and 47 DF, p-value: < 2.2e-16

̂ = 51.13 + 0.72𝑌𝑡 − 0.33𝑃𝑡


𝐷
B. METODO DE OPTIMIZACION MULTIVARIANTE
Minimizando la suma de residuos al cuadrado, definimos la función SCR función de p1, p2p, p3,
que son variables discretas, definida como negativa para poder minimizar

𝑆𝐶𝑅 = ∑(𝐷 − 𝛼0 + 𝛼1 𝑌𝑡 + 𝛼2 𝑃𝑡 )2
𝑖=1

> SCRfab <- function(p){


+ alfa0<- p[1]
+ alfa1<- p[2]
+ alfa2<- p[3]
+ SCR <- sum((consumo - alfa0*const - alfa1*renta - alfa2*precios)^
2)
+ return(SCR)
+ }
>
> SCRfabneg <- function(p){
+ alfa0<- p[1]
+ alfa1<- p[2]
+ alfa2<- p[3]
+ SCR <- -sum((consumo - alfa0*const - alfa1*renta - alfa2*precio
s)^2)
+ return(SCR)
+ }
>
> starting.values <- c(0,0,0)
> SCRfabneg.opt <- maxLik(SCRfabneg,
+ start= starting.values,
+ print.level=2,
+ method="BFGS")
initial value 1106702.108037
iter 2 value 271047.604279
iter 3 value 270972.563657
iter 4 value 2552.915545
iter 5 value 1068.976252
iter 6 value 1063.948949
iter 7 value 1016.555177
iter 8 value 1016.552902
iter 8 value 1016.552900
final value 1016.552900
converged
> SCRfabneg.opt$maximum
[1] -1016.553
> SCRfabneg.opt$estimate
[1] 51.1359441 0.7226000 -0.3341578
> SCRfabneg.opt$hess
[,1] [,2] [,3]
[1,] -100.0444 -18213.77 -11579.12
[2,] -18213.7683 -3630416.93 -2168159.88
[3,] -11579.1181 -2168159.88 -1352271.17
>
Se observa que los valores son iguales al igual que utilizando el método de MCO, ya que este
método minimiza la SRC con respecto a 𝛼0 , 𝛼1 , y 𝛼2
̂ = 51.13 + 0.72𝑌𝑡 − 0.33𝑃𝑡
𝐷

C. ESTIMACION POR MAXIMA VEROSIMILITUD SIN HETEROCEDASTICIDAD


La función que queremos maximizar es para el caso de no heterocedasticidad, la función
dependerá de α0 , α1 , α2 y σ2 , así:
𝑇 𝑇
′ −1
𝛼̃𝑀𝑉 = (∑ 𝑋𝑡 𝑋 𝑡 ) ∑ 𝑋𝑡 𝑦𝑡 = 𝛼̂𝑀𝐶𝑂
𝑡=1 𝑡=1
𝑇
1
𝜎̃ 2 𝑀𝑉 = ∑(𝑦𝑡 − 𝑋 ′ 𝑡 𝛼̃𝑀𝑉 )2
𝑇
𝑡=1
𝑇
2)
𝑇 𝑇 1
𝑙𝑛𝐿(𝛼, 𝜎 = − 𝑙𝑛2𝜋 − 𝑙𝑛𝜎 2 − 2 ∑(𝑦𝑡 − 𝑋 ′ 𝑡 𝛼)2
2 2 2𝜎
𝑡=1

Probamos con un starling values para las alfas iguales a cero y gamma 0.1 con un valor
positivo,por lo se estimara un modelo de regresión lineal donde se cumplan las hipótesis básicas
> LogL <- function(p){
+ alfa0<- p[1]
+ alfa1<- p[2]
+ alfa2<- p[3]
+ sigma<- p[4]
+ LL <- ( -(length(consumo)/2)*log(2*pi) - (length(consumo)/2)*log(
sigma^2)
+ - (1/(2*(sigma^2))) * sum((consumo - alfa0*const - alfa1*renta -
alfa2*precios)^2) )
+ return(LL)
+ }
>
> starting.values <- c ( 0.0 , # alfa1
+ 0.0 , # alfa2
+ 0.0 , # alfa3
+ 0.1 ) # sigma
>
> LogL.opt <- maxLik(LogL,start= starting.values,
+ print.level=3,
+ method="BFGS")
Initial function value: -55335036
Initial gradient value:
[1] 720282.6 141510787.5 85347584.9 1106701608.1
initial value 55335036.219544
iter 2 value 25644.368404
iter 90 value 146.250673
final value 146.250673
converged
> LogL.opt$maximum
[1] -146.2507
> LogL.opt$estimate
[1] 51.2277279 0.7228098 -0.3352791 4.5089988
> LogL.opt$hess
[,1] [,2] [,3] [,4]
[1,] -2.44426701 -4.479261e+02 -284.7571 0.02842171
[2,] -447.92614062 -8.928245e+04 -53321.3438 0.02842171
[3,] -284.75710678 -5.332134e+04 -33256.2990 0.00000000
[4,] 0.02842171 2.842171e-02 0.0000 -4.88853402
>
De los resultados obtenidos el logaritmo máximo de la función de verosimilitud es -146,25, los
parámetros óptimos estimados podemos ver que constante es un poco diferente a la estimada
por MCO, pero los coeficientes o cambios marginales son iguales que los estimados por MCO ,
asimismo el valor de sigma es positivo
̂ = 51.22 + 0.72𝑌𝑡 − 0.33𝑃𝑡
𝐷
𝜎̃ 2 𝑀𝑉 = 4.50
 ESTIMACION CON HETEROCEDASTICIDA
ESTIMACION MAXIMA VEROSIMILITUD CUANDO 𝜸 =2.34 SIN BUCLE
Utilizaremos la función con heterocedasticidad provocada por la renta, por lo que la función que
vamos a maximizar depende de α0 , α1, α2 , σ2 y 𝛾 , de la siguiente manera:
𝑉𝑎𝑟(𝑢𝑡 ) = 𝜎 2 𝑢 𝑌 𝛾 𝑡 y 0 < 𝛾 ≤ 3
𝑇 −1 𝑇
1 1
𝛼̃(𝛾) = (∑ 𝛾 𝑋𝑡 𝑋 ′ 𝑡 ) ∑ 𝑋𝑦
𝑍 𝑡 𝑍𝛾 𝑡 𝑡 𝑡
𝑡=1 𝑡=1
𝑇
1 1
𝜎̃ (𝛾, 𝛼) = ∑ 𝛾 (𝑦𝑡 − 𝑋 ′ 𝑡 𝛼)2
2
𝑇 𝑍 𝑡
𝑡=1

𝑇 𝑇
𝑇 𝑇 𝛾 1 1
𝑙𝑛𝐿(𝛼, 𝜎 2 , 𝛾) = − 𝑙𝑛2𝜋 − 𝑙𝑛𝜎 2 − ∑ 𝑙𝑛𝑍𝑡 − 2 ∑ 𝛾 (𝑦𝑡 − 𝑋 ′ 𝑡 𝛼)2
2 2 2 2𝜎 𝑍 𝑡
𝑡=1 𝑡=1
LogLHet <- function(p){
alfa0<- p[1]
alfa1<- p[2]
alfa2<- p[3]
sigma<- p[4]
gamma <- p[5]
logl <- (-(length(consumo)/2)*log(2*pi) - (length(consumo)/2)*log(si
gma^2) - (gamma/2)*sum(log(renta))
- 1/(2*(sigma^2))*sum(( 1/renta^(gamma))*(consumo - alfa0*c
onst - alfa1*renta -alfa2*precios)^2) )
return(logl)
}

starting.values <- c ( 73.7 , # alfa1


0.78 , # alfa2
-0.625 , # alfa3
0.1 , # sigma
2.34 ) # gamma2

LogLHet.opt <- maxLik(LogLHet,start= starting.values,


print.level=3,
method="BFGS")
LogLHet.opt$maximum
LogLHet.opt$estimate
LogLHet.opt$hess
domains.of.parameters <- matrix( c(-100, 100,
-5, 5,
-5, 5,
0.0001,50,
-50,50),
nrow=length(starting.values),
# number of rows
ncol=2,
# number of columns
byrow = TRUE)
# fill matrix by rows
LogLHet.opt <- genoud( LogLHet,
max=TRUE,
start= starting.values,
nvars=length(starting.values),
Domains = domains.of.parameters,
hessian=TRUE,
BFGS=TRUE,
pop.size=100,
max.generations=500,
print.level=3)
LogLHet.opt$value
LogLHet.opt$par
LogLHet.opt$hess
sqrt(diag(-solve(LogLHet.opt$hess)))

NOTE: HARD MAXIMUM GENERATION LIMIT HIT


At least one gradient is too large

Solution Fitness Value: -1.401916e+02

Parameters at the Solution (parameter, gradient):

X[ 1] : 7.368544e+01 G[ 1] : 8.030354e-08
X[ 2] : 7.837386e-01 G[ 2] : -3.729089e-02
X[ 3] : -6.246961e-01 G[ 3] : -1.182804e-02
X[ 4] : -9.804510e-03 G[ 4] : -7.039072e-01
X[ 5] : 2.329398e+00 G[ 5] : -9.678656e-04
Solution Found Generation 163
Number of Generations Run 500

Sat Mar 04 00:32:30 2017


Total run time : 0 hours 3 minutes and 36 seconds
There were 20 warnings (use warnings() to see them)
> LogLHet.opt$value
[1] -140.1916
> LogLHet.opt$par
[1] 73.68543997 0.78373865 -0.62469609 -0.00980451 2.32939843
> LogLHet.opt$hess
[,1] [,2] [,3] [,4]
[,5]
[1,] -3.852432e+00 -586.465958 -423.238264 -1.677236e-05 -1.535939
e-02
[2,] -5.864660e+02 -95492.971201 -65694.836388 7.767655e+00 4.188853
e+00
[3,] -4.232383e+02 -65694.836388 -46769.816623 2.463767e+00 -1.390731
e+00
[4,] -1.677236e-05 7.767655 2.463767 -1.143789e+06 2.687101
e+04
[5,] -1.535939e-02 4.188853 -1.390731 2.687101e+04 -6.680752
e+02
> sqrt(diag(-solve(LogLHet.opt$hess)))
[1] 20.782855600 0.054845662 0.262232135 0.003988191 0.165029709

ESTIMACION MAXIMA VEROSIMILITUD CUANDO 𝟎 < 𝛄 ≤ 𝟑 CON BUCLE


Realizamos un bucle para 0 < γ ≤ 3 , por lo que para un valor dado de gamma debemos estimar
los parámetros α0 , α1 , α2 y σ2 , por lo que para un valor dado de gamma se estimaran los
parámetros alfas:
𝛼̂ = (𝑋 ′ Ω−1 𝑋)−1 𝑋′Ω−1 𝑌
Donde la Ω estará formada por los γ , asi para la primera iteración cuando γ = 0, quedaría:

𝑦1 0
Ω=[ ⋱ ]
3
𝑦𝑛
Por lo que dado un γ calcularemos un 𝛼 , y dado un γ y 𝛼 calcularemos un 𝜎 2 y así hasta llegar
a todas las iteraciones que acaba en 3. Al estimar 𝜎 2 cogiendo los residuos al cuadrado
evaluaremos lnL para el valor de γ=0 y así sucesivamente para todos los valores de γ .
#creamos las variables identificar la matriz X
N<-50
K<-3
consumo <-datos$V1
renta<-datos$V2
precios<-datos$V3
const<- rep(1,length(consumo))

#creamos la matriz X
X<- matrix(data=rbind(const,renta,precios), nrow=50, ncol=3, byrow=T)
X [1:5,]
dim(X)
vecL<- rep(0,300)
vecgamma<-rep(0,300)
#creamos el bucle
> vecL<- rep(0,300)
> vecgamma<-rep(0,300)
> for (i in 0:300){
+ gamma <- i/100
+ vecgamma[i]<-gamma
+ omega<-diag(50)*renta^gamma
+ A<-(solve(t(X)%*%(solve(omega))%*%X))%*%(t(X)%*%(solve(omega))%*%co
nsumo)
+ SCR<-sum((consumo-(X%*%B))^2)
+ Varianza<-((1/N)*sum(( 1/renta^(gamma))*(consumo-(X%*%B))^2) )
+ logl <- (-(N/2)*log(2*pi) - (N/2)*log(Varianza) - (gamma/2)*sum(log
(renta))
+ - 1/(2*(Varianza))*sum(( 1/renta^(gamma))*(consumo-(X%*%B))^2) )
+ vecL[i] <- logl
+ }
> max(vecL)
[1] -140.1915
> vecgamma [which.max(vecL)]
[1] 2.34

De los resultados obtenidos el logaritmo máximo de la función de verosimilitud es -140.19, de


gamma (γ) = 2.34.

# optimización
> LogLHet <- function(p){
+ gamma<- p
+ omega<-diag(50)*renta^gamma
+ A<-(solve(t(X)%*%(solve(omega))%*%X))%*%(t(X)%*%(solve(omega))%*%co
nsumo)
+ Varianza<-((1/N)*sum(( 1/renta^(gamma))*(consumo-(X%*%B))^2) )
+ logl <- (-(N/2)*log(2*pi) - (N/2)*log(Varianza) - (gamma/2)*sum(log
(renta))
+ - (1/(2*(Varianza)))*sum(( 1/renta^(gamma))*(consumo-(X%*%B))^2) )
+ return(logl)
+ }
> optimize(LogLHet, c(0,3),maximum=T)
$maximum
[1] 2.337654

$objective
[1] -140.1915
De los resultados obtenidos el máximo es 2.33 y el objetive es de -140.19.
Como podemos observar los resultados obtenidos mediante el método de búsqueda en red
sobre el posible recorrido de gamma y el de la optimización son iguales.
Por lo que el valor de valor de gamma que hace máximo el valor de VecL es:
𝛾 = 2.33

#Obtenemos gráficamente
plot(vecL)
-140
-141
-142
-143
vecL

-144
-145
-146

0 50 100 150 200 250 300

Index

Observando el grafico podemos concluir que el máximo del VecL se logra cuando 𝛾 = 233 que
es igual a 𝛾 = 2,33 en escala centesimal.

También podría gustarte