Você está na página 1de 10

Custo de Produção de Energia Elétrica

Prof. Bernardo B. de Andrade, EST/IE/UnB

Abril/2023

1 Preliminares
Função de produção, Q = f (trabalho, capital, combustivel), da forma Cobb-Douglas:
α1 α2 α3
Qi = Ai zi1 zi2 zi3 (rma i = 1, . . . , n)
Ai captura efeitos não observáveis de eciência e ambientais entre rmas.
Homogeneidade implícita:
α1 + α2 + α3 = r (grau constante de retornos de escala)
⇒ Q(cz1 , cz2 , cz3 ) = cr Q(z1 , z2 , z3 ) (r = 1 ⇒ retorno de escala constante)
Função de custo total (minimização de custos1 , hipóteses sobre o setor de energia elétrica):
1/r α /r α /r α /r
Ci = a(Ai , α1 , α2 , α3 ) Qi pi11 pi22 pi33
| {z }
ai
Função de regressão:
yi = β0 + β1 xi1 + β2 xi2 + β3 xi3 + β4 xi4 + εi
sendo:
yi = log(Ci ), xi1 = log(Qi ),
xi2 = log(pi1 ), xi3 = log(pi2 ), xi4 = log(pi3 )
e
δi = log(ai ), β0 = δ̄, εi = δi − δ̄,
1 α1 α2 α3
β1 = , β2 = , β3 = , β4 =
r r r r

2 Dados de Produção e Energia Elétrica (EUA, 1970)


Os dados se encontram no pacote AER.
1 min p1 z1 + p2 z2 + p3 z3 s.a. Q = f (z1 , z2 , z3 ); exercício comentado em sala: caso com dois fatores
z

1
require(AER)
data("Electricity1970")
dim(Electricity1970)

## [1] 158 8

Elec70 <- Electricity1970[1:123,c(1:3,5,7)]


elec70 <- Elec70[Elec70$cost>2,]
# modelo com todos os dados requer termos quadratico em output
round(cor(elec70), 2)

## cost output labor capital fuel


## cost 1.00 0.96 0.22 0.06 0.22
## output 0.96 1.00 0.11 0.01 0.08
## labor 0.22 0.11 1.00 0.02 0.34
## capital 0.06 0.01 0.02 1.00 0.14
## fuel 0.22 0.08 0.34 0.14 1.00

with( elec70, hist(log(cost)) )

Histogram of log(cost)
20
15
Frequency

10
5
0

1 2 3 4 5 6

log(cost)

Grácos de Dispersão
pairs(elec70, panel = panel.smooth, pch = ".",
log = "xy", cex=3, lower.panel=NULL,
main = "Escala log-log" )

Escala log−log
2 5 20 100 200 2000 20000 6000 8000 1100040 50 70 90 10 20 30 50
100

100

cost
20

20
2 5

50000 2 5

output
2000200
11000
8000

labor
6000
90
70

capital
50
40
50
20 30

fuel
10

10 20 30 50

2
3 Modelo Completo (Irrestrito)
(Problema de identicação: 5 coecientes de regressão, 4 parâmetros tecnológicos.)
m1 <- lm(log(cost) ~ log(output) + log(labor) + log(capital) + log(fuel),
data = elec70)
summary(m1)

##
## Call:
## lm(formula = log(cost) ~ log(output) + log(labor) + log(capital) +
## log(fuel), data = elec70)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.3427 -0.0863 -0.0158 0.0790 0.4640
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -9.29152 0.91252 -10.18 <2e-16
## log(output) 0.91296 0.01063 85.87 <2e-16
## log(labor) 0.25548 0.09473 2.70 0.0081
## log(capital) -0.00148 0.09912 -0.01 0.9881
## log(fuel) 0.73521 0.05083 14.46 <2e-16
##
## Residual standard error: 0.14 on 108 degrees of freedom
## Multiple R-squared: 0.987,Adjusted R-squared: 0.986
## F-statistic: 2.01e+03 on 4 and 108 DF, p-value: <2e-16

Sinal de β̂3 inesperado. De fato, efeito não signicativo do ponto de vista estatístico.
vif(m1)

## log(output) log(labor) log(capital) log(fuel)


## 1.0 1.1 1.0 1.1

Hipóteses relevantes
ˆ signicância dos termos, H0 : βj = 0 (esperam-se efeitos positivos signicantes);

ˆ homogeneidade H0 : β2 + β3 + β4 = 1 (α1 + α2 + α3 = r).

ˆ retornos constantes de escala, H0 : β1 = 1 (r = 1);

4 Diferentes coecientes de determinação, R2


O valor R2 = 98.7% acima se refere a porcentagem da variação em log(C) explicada pelo
modelo. Para isolar o efeito dos preços devemos utilizar o custo per capita (C/Q) ou
custo por unidade produzida resultando no modelo ajustado abaixo cujo poder explicativo
medido por R2 é de 75% da variabilidade do log do custo per capita. Os demais coecientes
e seus EPs se mantêm. O coeciente de log(Q) passa a ser β1 − 1. Qualitativamente nada
muda porém o valor de R2 é mais informativo. Além disso devemos calcular o coeciente
para (C/Q) o que resulta em pequena redução para R2 = 69%.

3
m1.aux <- update(m1, log(cost/output) ~ .)
summary(m1.aux)

##
## Call:
## lm(formula = log(cost/output) ~ log(output) + log(labor) + log(capital) +
## log(fuel), data = elec70)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.3427 -0.0863 -0.0158 0.0790 0.4640
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -9.29152 0.91252 -10.18 < 2e-16
## log(output) -0.08704 0.01063 -8.19 5.8e-13
## log(labor) 0.25548 0.09473 2.70 0.0081
## log(capital) -0.00148 0.09912 -0.01 0.9881
## log(fuel) 0.73521 0.05083 14.46 < 2e-16
##
## Residual standard error: 0.14 on 108 degrees of freedom
## Multiple R-squared: 0.748,Adjusted R-squared: 0.739
## F-statistic: 80.3 on 4 and 108 DF, p-value: <2e-16

c.q <- exp(fitted(m1.aux)) # versao mais simples de estimar C/Q


with(elec70, cor(c.q,cost/output)^2)

## [1] 0.69

5 Modelo Reduzido (Restrito)


Equação estimada sob H0 : β2 + β3 + β4 = 1:
(β̂4 = 1 + 0.004 − 0.26 = 0.74)
Note que a estimativa de β4 não é muito diferente da do modelo completo indicando
que a restrição a H0 deve ser adequada.
m2 <- lm(log(cost/fuel) ~ log(output) + log(capital/fuel) + log(labor/fuel), data=elec70)
summary(m2)

##
## Call:
## lm(formula = log(cost/fuel) ~ log(output) + log(capital/fuel) +
## log(labor/fuel), data = elec70)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.3444 -0.0870 -0.0159 0.0790 0.4631
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -9.35797 0.38790 -24.12 < 2e-16
## log(output) 0.91282 0.01044 87.42 < 2e-16
## log(capital/fuel) 0.00431 0.06791 0.06 0.94956
## log(labor/fuel) 0.26010 0.07498 3.47 0.00075
##
## Residual standard error: 0.14 on 109 degrees of freedom
## Multiple R-squared: 0.986,Adjusted R-squared: 0.986
## F-statistic: 2.56e+03 on 3 and 109 DF, p-value: <2e-16

4
Teste de Homogeneidade da Função Custo
O teste F necessário para avaliar a signicância estatística da hipótese de homogeneidade
H0 : β2 + β3 + β4 = 1. Em notação de matricial (Souza, pg.73) (K = a′ , M = 0) estamos
testando a′ β = 0:  
β0
β1 
 
H0 : 0 0 1 1 1 
β2  = 1

β3 
β4
pode ser levado a cabo comparando-se a soma de quadrados dos resíduos (SQR) de cada
modelo:
SQRreduzido − SQRcompleto
F = 2
∼ F (g, n − p)
gσ̂completo
sendo g o número de restrições lineares, no caso g = 1.
sq1 = sum(resid(m1)^2)
sq2 = sum(resid(m2)^2)
Fobs = (sq2 - sq1)/(sq1/108)
Fobs

## [1] 0.0065

1-pf(Fobs, 1, 108) # confere com 'linearHypothesis' abaixo

## [1] 0.94

Intervalo de conança discutido em aula para θ = a′ β = β2 + β3 + β4 :


a = c(0,0,1,1,1)
b = coef(m1)
theta = sum(a*b)
theta

## [1] 0.99

var.theta = as.numeric( t(a) %*% vcov(m1) %*% a )


sqrt(var.theta)

## [1] 0.13

theta + c(-1,1)*qt(0.975, df=108)*sqrt(var.theta) # cobre o valor '1'

## [1] 0.72 1.26

(theta-1)^2 / var.theta # obs.: estatistica F obtida acima

## [1] 0.0065

Uma alternativa é utilizar da função linearHypothesis do pacote car (companion to


applied regression).

5
library(car)
linearHypothesis(m1, "log(labor) + log(capital) + log(fuel) = 1", test = "F")

## Linear hypothesis test


##
## Hypothesis:
## log(labor) + log(capital) + log(fuel) = 1
##
## Model 1: restricted model
## Model 2: log(cost) ~ log(output) + log(labor) + log(capital) + log(fuel)
##
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 109 2.11
## 2 108 2.11 1 0.000127 0.01 0.94

Exercício: calcular a variância de θ com base em Cov(β̂j , β̂k ).


P P
Var β̂j + 2

Teste de Retornos Constantes de Escala


O teste t para averiguar a hipótese retornos constantes de escala (H0 : β1 = 1) pode ser
obtido a partir de um teste F . Observe que a estatística F é o quadrado da estatística t e
o p-valor é o mesmo considerando-se uma alternativa bicaudal.
require(car)
linearHypothesis(m2, "log(output) = 1", test = "F")

## Linear hypothesis test


##
## Hypothesis:
## log(output) = 1
##
## Model 1: restricted model
## Model 2: log(cost/fuel) ~ log(output) + log(capital/fuel) + log(labor/fuel)
##
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 110 3.46
## 2 109 2.11 1 1.35 69.7 2.4e-13

# 2*pt(-sqrt(69.7), df = 108)

Exercício: construa um IC de 95% para r.

Grácos de Diagnóstico do Modelo Restrito


par(mfrow=c(2,2))
plot(m2, which=1:4)

6
Residuals vs Fitted Normal Q−Q

4
35 35
0.4

3
Standardized residuals
150 150

2
0.2
Residuals

1
0.0

0
−0.4 −0.2

−2 −1
151
151

−3 −2 −1 0 1 2 −2 −1 0 1 2

Fitted values Theoretical Quantiles

Scale−Location Cook's distance


0.20

35
150
150
151
Standardized residuals

151
1.5

149
0.15
Cook's distance
1.0

0.10
0.05
0.5

0.00
0.0

−3 −2 −1 0 1 2 0 20 40 60 80 100

Fitted values Obs. number

Testes de Cook-Weisberg (Breusch-Pagan) para homocedasticidade


condicional e estimativas robustas de White
BP:
bptest(m2)

##
## studentized Breusch-Pagan test
##
## data: m2
## BP = 16, df = 3, p-value = 0.001

Comparando a estimativa clássica com a estimativa robusta de White para


Var(β̂):

round(vcov(m2), 3)

## (Intercept) log(output) log(capital/fuel) log(labor/fuel)


## (Intercept) 0.150 -0.001 0.018 -0.028
## log(output) -0.001 0.000 0.000 0.000
## log(capital/fuel) 0.018 0.000 0.005 -0.004
## log(labor/fuel) -0.028 0.000 -0.004 0.006

round(sandwich(m2), 3)

## (Intercept) log(output) log(capital/fuel) log(labor/fuel)


## (Intercept) 0.155 -0.002 0.015 -0.027
## log(output) -0.002 0.000 0.000 0.000
## log(capital/fuel) 0.015 0.000 0.004 -0.003
## log(labor/fuel) -0.027 0.000 -0.003 0.005

MQP assumindo Var(εi|X) = σ2 exp(x′iδ)


Resultados ao lado das estimativas clássicas para comparação.

7
u2 <- resid(m2)^2
logu2 <- log(u2)
g <- fitted(update(m2, logu2 ~ .))
h <- exp(g)
m2MQP <- update(m2, weights = 1/h)
cbind(coef(summary(m2))[, 1:2], coef(summary(m2MQP))[, 1:2])

## Estimate Std. Error Estimate Std. Error


## (Intercept) -9.3580 0.388 -9.711 0.309
## log(output) 0.9128 0.010 0.931 0.010
## log(capital/fuel) 0.0043 0.068 -0.014 0.062
## log(labor/fuel) 0.2601 0.075 0.297 0.058

Grácos de Diagnóstico do Modelo Restrito com Heterocedastici-


dade
par(mfrow=c(2,2))
plot(m2MQP, which=1:4)

Residuals vs Fitted Normal Q−Q


0.6

35 144
3

150 132
Standardized residuals
0.4

149
2
Residuals

0.2

1
0
0.0

−3 −2 −1
−0.4

176

−3 −2 −1 0 1 2 −2 −1 0 1 2

Fitted values Theoretical Quantiles

Scale−Location Cook's distance


144
176 144
132
1.5
Standardized residuals

0.08

150
Cook's distance

141
1.0

0.04
0.5

0.00
0.0

−3 −2 −1 0 1 2 0 20 40 60 80 100

Fitted values Obs. number

Teste de Retornos Constantes de Escala


O teste t para averiguar a hipótese retornos constantes de escala (H0 : β1 = 1) pode ser
feito como no caso do modelo completo e obtido a partir de um teste F ou da estatística t
e o p-valor é o mesmo considerando-se um alternative bicaudal.
require(car)
linearHypothesis(m2MQP, "log(output) = 1", test = "F")

## Linear hypothesis test


##
## Hypothesis:
## log(output) = 1
##
## Model 1: restricted model
## Model 2: log(cost/fuel) ~ log(output) + log(capital/fuel) + log(labor/fuel)
##
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 110 542
## 2 109 381 1 162 46.2 5.9e-10

# 2*pt(-sqrt(142), df = 141)

8
6 Modelo com Termo Quadrático e Homogeneidade
(Utilizando todas as 123 observações. Elec70 ao invés de elec70.)
m3 <- lm(log(cost/fuel) ~ log(output) + I(log(output)^2) +
log(capital/fuel) + log(labor/fuel), data = Elec70)
summary(m3)

##
## Call:
## lm(formula = log(cost/fuel) ~ log(output) + I(log(output)^2) +
## log(capital/fuel) + log(labor/fuel), data = Elec70)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.4523 -0.0961 0.0012 0.0797 0.4068
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -7.29402 0.34428 -21.19 < 2e-16
## log(output) 0.39091 0.03699 10.57 < 2e-16
## I(log(output)^2) 0.03121 0.00258 12.11 < 2e-16
## log(capital/fuel) 0.07479 0.06165 1.21 0.22748
## log(labor/fuel) 0.26078 0.06811 3.83 0.00021
##
## Residual standard error: 0.14 on 118 degrees of freedom
## Multiple R-squared: 0.992,Adjusted R-squared: 0.991
## F-statistic: 3.46e+03 on 4 and 118 DF, p-value: <2e-16

bptest(m3)

##
## studentized Breusch-Pagan test
##
## data: m3
## BP = 35, df = 4, p-value = 5e-07

par(mfrow=c(2,2))
plot(m3, which=1:4)

Residuals vs Fitted Normal Q−Q


0.4

20 20
3
Standardized residuals

2
0.2
Residuals

1
0.0

0
−1
−0.4

4
4
−3

151
151

−4 −2 0 2 −2 −1 0 1 2

Fitted values Theoretical Quantiles

Scale−Location Cook's distance


20 151
146
4
Standardized residuals

1.5

0.6
Cook's distance

20
1.0

0.4

1
0.5

0.2
0.0

0.0

−4 −2 0 2 0 20 40 60 80 100 120

Fitted values Obs. number

u2 <- resid(m3)^2
logu2 <- log(u2)
g <- fitted(update(m3, logu2 ~ .))
h <- exp(g)

9
m3MQP <- update(m3, weights = 1/h)
cbind(coef(summary(m3))[, 1:2], coef(summary(m3MQP))[, 1:2])

## Estimate Std. Error Estimate Std. Error


## (Intercept) -7.294 0.3443 -7.920 0.4177
## log(output) 0.391 0.0370 0.486 0.0713
## I(log(output)^2) 0.031 0.0026 0.026 0.0042
## log(capital/fuel) 0.075 0.0616 0.024 0.0509
## log(labor/fuel) 0.261 0.0681 0.310 0.0565

par(mfrow=c(2,2))
plot(m3MQP, which=1:4)

Residuals vs Fitted Normal Q−Q


3

20 144
132
Standardized residuals

1
2

22
0.4
Residuals

1
0
0.0

−3 −2 −1
−0.4

176

−4 −2 0 2 −2 −1 0 1 2

Fitted values Theoretical Quantiles

Scale−Location Cook's distance


176
144 48
132
Standardized residuals

1.5

0.15
Cook's distance
1.0

0.10

144
176
0.05
0.5

0.00
0.0

−4 −2 0 2 0 20 40 60 80 100 120

Fitted values Obs. number

7 Conclusões
ˆ Evidência em favor de homogeneidade de ordem menor do que 1 da função de pro-
dução (retornos não constantes de escala).
ˆ Preços dos fatores explicam cerca de 70% da variabilidade nos custos.

ˆ Preço do capital sem efeito empírico (problemas reconhecidos de mensuração/agregação).

ˆ Necessidade de termo quadrático e modelagem da heterocedasticidade.

10

Você também pode gostar