# Log-Log Model

Finally, a log-log model is used. This functional form is often used to estimate demand equations as it implies a constant price elasticity for the commodity in question. This example uses the newbroiler. gdt which is adapted from Epple and McCallum (2006). The variable Q is per capita consumption of chicken, in pounds and P is the real price in dollars. The sample is from 1950-2001. The estimated log-log model is

l_q = 3.71694 – 1.12136 l_p

(0.022359) (0.048756)

T = 52 R2 = 0.9119 F(1, 50) = 528.96 <7 = 0.11799

(standard errors in parentheses)

The coefficient on logarithm of P is 1.121 which means that a 1% increase in the real price of chicken will decrease quantity demanded by 1.121%.

Once again, the predictor of quantity needs to be corrected since the model is estimated in logarithms. Qc = exp (b + b2 ln(x) + 72/2) = eln(Q)e<J /2. The R2 statistic can be computed as the squared correlation between Q and Q. The script for this exercise is:

1 open "@gretldirdatapoenewbroiler. gdt"

2 logs q p

3 ols l_q const l_p

4 series yht=$yhat

5 series pred = exp(yht)

6 series corrected_pred=pred*exp($sigma"2/2)

7 scalar r2= corr(corrected_pred, q)"2

8 gnuplot corrected_pred q p

The results are

? scalar r2= corr(corrected_pred, q)"2 Generated scalar r2 = 0.881776

and the corresponding graph is found in Figure 4.20.

4.5

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |

set echo off

# estimate model by LS and predict food_exp open "@gretldirdatapoefood. gdt"

ols food_exp const income

scalar yhat0 = $coeff(const) + $coeff(income)*20

# prediction interval ols food_exp const income

scalar yhat0 = $coeff(const) + $coeff(income)*20 scalar f=8013.2941+(8013.2941/40)+4.3818*(20-19.6047)rt2 scalar ub=yhat0+2.0244*sqrt(f) scalar lb=yhat0-2.0244*sqrt(f)

# prediction interval using accessors ols food_exp const income

scalar yhat0=$coeff(const)+20*$coeff(income) scalar sig2 = $ess/$df

scalar f = sig2 + sig2/$nobs + ((20-mean(income))rt2)*($stderr(income)rt2) scalar lb = yhat0-critical(t,$df,0.025)*sqrt(f) scalar ub = yhat0+critical(t,$df,0.025)*sqrt(f)

# correlations

ols food_exp const income –anova c1 = corr(food_exp,$yhat)

# linear-log model

series l_income = ln(income) ols food_exp const l_income series yhat2 = $yhat gnuplot yhat2 food_exp income

# simple data plot

open "@gretldirdatapoech4sim1.gdt" gnuplot e x

# residual plot

open "@gretldirdatapoech4sim2.gdt" ols y const x series ehat = $uhat gnuplot ehat x

# normality tests

open "@gretldirdatapoefood. gdt"

ols food_exp const income

series uhat1 = $uhat

summary uhat1

normtest uhat1 —jbera

normtest uhat1 —all

modtest —normality

# polynomial

52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |

open "@gretldirdatapoewa-wheat. gdt" ols greenough const time gnuplot greenough time

setinfo greenough – d "Wheat yield in tonnes" – n "Yield in tonnes" gnuplot greenough —with-lines —time-series

series t3=timert3/1000000 ols greenough const t3

gnuplot greenough —with-lines —time-series

open "@gretldirdatapoewa-wheat. gdt" series lyield = log(greenough) ols lyield const time

# log-linear model

open "@gretldirdatapoecps4_small. gdt" logs wage

ols l_wage const educ

scalar lb = $coeff(educ) – 1.96 * $stderr(educ) scalar ub = $coeff(educ) + 1.96 * $stderr(educ) print lb ub

open "@gretldirdatapoecps4_small. gdt" logs wage

ols l_wage const educ series y = exp($yhat) scalar corrl = corr(y, wage) scalar Rsquare = corr1rt2 print corr1 Rsquare

# simple prediction in log-linear model open "@gretldirdatapoecps4_small. gdt" logs wage

ols l_wage const educ

scalar l_wage_12 = $coeff(const)+$coeff(educ)*12 scalar nat_pred = exp(l_wage_12) scalar corrected_pred = nat_pred*exp($sigmart2/2) print l_wage_12 nat_pred corrected_pred

smpl educ=12 –restrict summary wage smpl full

# prediction intervals using a loop open "@gretldirdatapoecps4_small. gdt" logs wage

ols l_wage const educ scalar sig2 = $ess/$df matrix sem = zeros(21,5) loop for i = 1..21 –quiet

scalar yh = ($coeff(const) + $coeff(educ)*i)

scalar f = sig2 + sig2/$nobs + ((i-mean(educ))rt2)*($stderr(educ)rt2)

sem[i,1]=i

sem[i,2] = yh

sem[i,3]=sqrt(f)

sem[i,4]=exp(yh-critical(t,$df,0.025)*sqrt(f)) sem[i,5]=exp(yh+critical(t,$df,.025)*sqrt(f)) endloop print sem

nulldata 21 —preserve series ed=sem[,1] series wage=exp(sem[,2]) series lb=sem[,4] series ub=sem[,5]

# corrected predictions in log-linear model open "@gretldirdatapoenewbroiler. gdt" logs q p

ols l_q const l_p series yht=$yhat series pred = exp(yht)

103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |

series corrected_pred=pred*exp($sigmart2/2) scalar r2= corr(corrected_pred, q)rt2 gnuplot corrected_pred q p

## Leave a reply