> ls() [1] "a" "b" "bl" "ckdata" "ckfit" [6] "ckfit1" "demp" "df" "emp0" "emp1" [11] "fit0" "fit11" "fit12" "fit2" "fits" [16] "ggammaln" "matrictint" "mwf" "mwfe" "nd" [21] "olsDummy" "STATEP" "X" "Xd" "y" [26] "yd" > ### emp0 is initial employment (EMPFT+EMPPT*.5) and emp1 is second-round employment > dimnames(ckdata)[2] [[1]] [1] "SHEET" "CHAIN" "COOWNED" "STATE" "SOUTHJ" "CENTRALJ" [7] "NORTHJ" "PA1" "PA2" "SHORE" "NCALLS" "EMPFT" [13] "EMPPT" "NMGRS" "WAGE_ST" "INCTIME" "FIRSTINC" "BONUS" [19] "PCTAFF" "MEALS" "OPEN" "HRSOPEN" "PSODA" "PFRY" [25] "PENTREE" "NREGS" "NREGS11" "TYPE2" "STATUS2" "DATE2" [31] "NCALLS2" "EMPFT2" "EMPPT2" "NMGRS2" "WAGE_ST2" "INCTIME2" [37] "FIRSTIN2" "SPECIAL2" "MEALS2" "OPEN2R" "HRSOPEN2" "PSODA2" [43] "PFRY2" "PENTREE2" "NREGS2" "NREGS112" > ## mwf is max(5.05-WAGE_ST,0); mwfe is emp0*mwf. > ## demp is emp1-emp0 > fit1 <- lm(demp~mwf) > summary(fit1) Call: lm(formula = demp ~ mwf) Residuals: Min 1Q Median 3Q Max -42.1330 -3.6330 0.2276 4.4490 25.4490 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -1.4948 0.7992 -1.870 0.0622 . mwf 2.5573 1.4502 1.763 0.0787 . --- Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1 Residual standard error: 8.501 on 370 degrees of freedom Multiple R-Squared: 0.008334, Adjusted R-squared: 0.005654 F-statistic: 3.11 on 1 and 370 DF, p-value: 0.07866 > fit2 <- lm(demp~mwfe) > summary(fit2) Call: lm(formula = demp ~ mwfe) Residuals: Min 1Q Median 3Q Max -44.19570 -3.74036 -0.02853 4.39119 27.54097 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 1.46402 0.65691 2.229 0.026437 * mwfe -0.22765 0.06284 -3.623 0.000332 *** --- Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1 Residual standard error: 8.389 on 370 degrees of freedom Multiple R-Squared: 0.03425, Adjusted R-squared: 0.03164 F-statistic: 13.12 on 1 and 370 DF, p-value: 0.0003325 > ## Note: strong *negative* effect of minimum wage > fit3 <- lm(demp~emp0+STATE) Error in eval(expr, envir, enclos) : Object "STATE" not found > attach(ckdata) > fit3 <- lm(demp~emp0+STATE) > summary(fit3) Call: lm(formula = demp ~ emp0 + STATE) Residuals: Min 1Q Median 3Q Max -17.770 -4.699 -1.194 3.569 33.498 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 7.77439 1.15071 6.756 5.2e-11 *** emp0 -0.51289 0.03925 -13.066 < 2e-16 *** STATENJ 1.42111 0.94398 1.505 0.133 --- Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1 Residual standard error: 7.33 on 388 degrees of freedom Multiple R-Squared: 0.3176, Adjusted R-squared: 0.3141 F-statistic: 90.29 on 2 and 388 DF, p-value: < 2.2e-16 > fit4 <- lm(demp~emp0+mwfe) > summary(fit4) Call: lm(formula = demp ~ emp0 + mwfe) Residuals: Min 1Q Median 3Q Max -17.592 -4.589 -0.984 3.594 29.266 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 8.41053 0.77088 10.91 <2e-16 *** emp0 -0.54840 0.04285 -12.80 <2e-16 *** mwfe 0.12101 0.05903 2.05 0.0411 * --- Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1 Residual standard error: 6.991 on 369 degrees of freedom Multiple R-Squared: 0.3312, Adjusted R-squared: 0.3275 F-statistic: 91.35 on 2 and 369 DF, p-value: < 2.2e-16 > ##Note: strongest *positive* effect yet of a minimum wage variable > fit5 <- lm(demp~emp0+mwf) > summary(fit5) Call: lm(formula = demp ~ emp0 + mwf) Residuals: Min 1Q Median 3Q Max -17.598 -4.694 -1.083 3.664 30.464 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 8.11296 0.98466 8.239 3.05e-15 *** emp0 -0.50469 0.03837 -13.154 < 2e-16 *** mwf 1.03157 1.20380 0.857 0.392 --- Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1 Residual standard error: 7.024 on 369 degrees of freedom Multiple R-Squared: 0.3249, Adjusted R-squared: 0.3212 F-statistic: 88.79 on 2 and 369 DF, p-value: < 2.2e-16 > fit6 <- lm(demp~emp0+mwfe+STATE) > summary(fit6) Call: lm(formula = demp ~ emp0 + mwfe + STATE) Residuals: Min 1Q Median 3Q Max -17.9681 -4.6856 -0.9716 3.6004 28.9710 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 7.49977 1.13090 6.632 1.19e-10 *** emp0 -0.54347 0.04307 -12.618 < 2e-16 *** mwfe 0.12229 0.05903 2.072 0.039 * STATENJ 1.01243 0.92006 1.100 0.272 --- Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1 Residual standard error: 6.989 on 368 degrees of freedom Multiple R-Squared: 0.3334, Adjusted R-squared: 0.3279 F-statistic: 61.34 on 3 and 368 DF, p-value: < 2.2e-16 > str(olsDummy) function (y = NULL, X = NULL, yd = NULL, Xd = NULL, lambda = 1, ndraw = 0) - attr(*, "source")= chr [1:50] "function(y=NULL,X=NULL,yd=NULL,Xd=NULL,lambda=1,ndraw=0)" ... > frame4 <- model.frame(fit4) > y <- model.response(frame4) > X <- model.matrix(frame4) Error in terms.default(object) : no terms component > X <- model.matrix(fit4) > str(X) num [1:372, 1:3] 1 1 1 1 1 1 1 1 1 1 ... - attr(*, "dimnames")=List of 2 ..$ : chr [1:372] "4" "5" "7" "8" ... ..$ : chr [1:3] "(Intercept)" "emp0" "mwfe" - attr(*, "assign")= int [1:3] 0 1 2 > mx <- apply(X,FUN=mean,MARGIN=2) > mx (Intercept) emp0 mwfe 1.000000 17.647177 7.833226 > sdx <- apply(X,FUN=sd,MARGIN=2) > sdx (Intercept) emp0 mwfe 0.000000 9.548395 6.930784 > sd(y) [1] 8.525336 > Xd <- matrix(c(1,0,0, 0,10,0, 0,0,7, 0,0,0),byrow=TRUE,ncol=3) > yd <- matrix(c(0,0,0,4),4,1) > pfit4 <- olsDummy(y=y,X-X,yd=yd,Xd=Xd) Error in rbind(y, landa * yd) : Object "landa" not found > pfit4 <- olsDummy(y=y,X-X,yd=yd,Xd=Xd) Error in model.frame(formula, rownames, variables, varnames, extras, extranames, : variable lengths differ In addition: Warning message: number of columns of result not a multiple of vector length (arg 1) in: rbind(y, lambda * yd) > dim(X) [1] 372 3 > dim(Xd) [1] 4 3 > dim(y) NULL > y <- matrix(y,ncol=1) > pfit4 <- olsDummy(y=y,X-X,yd=yd,Xd=Xd) > pfit4$w [1] -1328.297 > dim(y) [1] 372 1 > y6 <- model.response(model.frame(pfit6)) Error in model.frame(pfit6) : Object "pfit6" not found > y6 <- model.response(model.frame(fit6)) > length(y6) # checking that we haven't changed the number of NA's [1] 372 > y6 <- matrix(y6,ncol=1) > X6 <- model.matrix(fit6) > str(X6) num [1:372, 1:4] 1 1 1 1 1 1 1 1 1 1 ... - attr(*, "dimnames")=List of 2 ..$ : chr [1:372] "4" "5" "7" "8" ... ..$ : chr [1:4] "(Intercept)" "emp0" "mwfe" "STATENJ" - attr(*, "assign")= int [1:4] 0 1 2 3 - attr(*, "contrasts")=List of 1 ..$ STATE: chr "contr.treatment" > Xd [,1] [,2] [,3] [1,] 1 0 0 [2,] 0 10 0 [3,] 0 0 7 [4,] 0 0 0 > Xd6 <- cbind(Xd,c(0,0,0,0)) > Xd6 [,1] [,2] [,3] [,4] [1,] 1 0 0 0 [2,] 0 10 0 0 [3,] 0 0 7 0 [4,] 0 0 0 0 > Xd6 <- rbind(Xd6,c(0,0,0,1)) > Xd6 [,1] [,2] [,3] [,4] [1,] 1 0 0 0 [2,] 0 10 0 0 [3,] 0 0 7 0 [4,] 0 0 0 0 [5,] 0 0 0 1 > yd [,1] [1,] 0 [2,] 0 [3,] 0 [4,] 4 > yd6 <- rbind(yd,0) > yd6 [,1] [1,] 0 [2,] 0 [3,] 0 [4,] 4 [5,] 0 > pfit4 <- olsDummy(y=y6,X=X6,yd=yd6,Xd=Xd6) > pfit6 <- pfit4 > pfit4 <- olsDummy(y=y,X=X,yd=yd,Xd=Xd) > pfit4$w [1] -1262.82 > pfit6$w [1] -1264.106 > summary(pfit6$fit) Call: lm(formula = ys ~ Xs + 0) Residuals: Min 1Q Median 3Q Max -18.1577 -4.6490 -0.9605 3.6512 28.8910 Coefficients: Estimate Std. Error t value Pr(>|t|) Xs(Intercept) 7.29732 1.10640 6.596 1.45e-10 *** Xsemp0 -0.53735 0.04263 -12.604 < 2e-16 *** Xsmwfe 0.12170 0.05866 2.075 0.0387 * XsSTATENJ 1.11134 0.90248 1.231 0.2189 --- Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1 Residual standard error: 6.962 on 373 degrees of freedom Multiple R-Squared: 0.3309, Adjusted R-squared: 0.3237 F-statistic: 46.12 on 4 and 373 DF, p-value: < 2.2e-16 > summary(pfit4$fit) Call: lm(formula = ys ~ Xs + 0) Residuals: Min 1Q Median 3Q Max -17.760 -4.533 -0.893 3.693 29.208 Coefficients: Estimate Std. Error t value Pr(>|t|) Xs(Intercept) 8.28480 0.76384 10.846 <2e-16 *** Xsemp0 -0.54228 0.04253 -12.750 <2e-16 *** Xsmwfe 0.12043 0.05877 2.049 0.0411 * --- Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1 Residual standard error: 6.976 on 373 degrees of freedom Multiple R-Squared: 0.3282, Adjusted R-squared: 0.3228 F-statistic: 60.74 on 3 and 373 DF, p-value: < 2.2e-16