library(systemfit) ####################################################### ##2SLS used to overcome simulteneity bias############## ####################################################### n = 100000 N = rnorm(n,5,1) R = runif(n, 0,10) alpha = 0; beta = .2; theta = 1; lambda = 1; psi = -.3; eta = 2; e = rnorm(n,0,.5) u = rnorm(n,0,.5) ##Reduced form parameters############################## a = (alpha + beta*lambda)/(1-beta*lambda) b = (beta*eta)/(1-beta*lambda) c = theta/(1-beta*lambda) w = (beta*u + e)/(1-beta*lambda) d = (lambda-psi*alpha)/(1-beta*lambda) f = eta/(1-beta*lambda) g = (psi*theta)/(1-beta*lambda) v = (psi*e + u)/(1-beta*lambda) ##Simulated values for P, M############################ P = d + f*R + g*N + v M = a + b*R + c*N + w ##First Stage Regression############################### Mhat = lm(M ~ N + R)$fitted.values Phat = lm(P ~ N + R)$fitted.values ##Second Stage Regression############################## lm(M ~ Phat + N) lm(P ~ Mhat + R) ##Second Stage Regression - using systemfit############ eqM = M ~ P + N eqP = P ~ M + R eqSystem = list(demand=eqM, supply=eqP) fit2sls <- systemfit(eqSystem, method = "2SLS", inst = ~ N + R ) ####################################################### ##What if e and u were correlated? 3SLS############### ####################################################### u = .5*e + rnorm(n,0,.2) cor(u,e) ##Resimulate data###################################### w1 = (beta*u + e)/(1-beta*lambda) v1 = (psi*e + u)/(1-beta*lambda) ##Simulated values for P, M############################ P = d + f*R + g*N + v1 M = a + b*R + c*N + w1 ##First Stage Regression############################### Mhat = lm(M ~ N + R)$fitted.values Phat = lm(P ~ N + R)$fitted.values ##Second Stage Regression############################## ehat = lm(M ~ Phat + N)$residuals uhat = lm(P ~ Mhat + R)$residuals ##Restimate Second Stage Regression with ehat, uhat#### lm(M ~ Phat + N + uhat) lm(P ~ Mhat + R + ehat) ##Three Stage Regression - using systemfit############ fit3sls <- systemfit(eqSystem, method = "3SLS", inst = ~ N + R )