% INTERACTIVE DUMMY VARIABLES & SPLINE REGRESSIONS IN AN EARNINGS EQUATION clc; % Load Data M = importdata('matlabex11data.txt'); data = M.data; n = size(data,1); % Define Variables age = data(:,1); age2 = age.^2; grade = data(:,3); lnwage = data(:,6); potexp = data(:,9); married = data(:,5); margrade = married.*grade; constant = ones(n,1); xmat = [constant,age,age2,grade,married,margrade]; k = size(xmat,2); spline = 1; % ******************** % DUMMY VARIABLE MODEL % ******************** if spline == 0; % Least Squares Estimation b = inv(xmat'*xmat)*(xmat'*lnwage); e = lnwage - xmat*b; s2 = e'*e/(n-k); varb = s2*inv(xmat'*xmat); t = b./sqrt(diag(varb)); disp(['Unrestricted Coefficient Vector = ']); disp(num2str(b)); disp([' ']); disp(['t Statistics = ']); disp(num2str(t)); disp([' ']); % Graph Fitted Regression Line (Married=0) grade = linspace(8,18,n)'; age = 25*ones(n,1); age2 = (25.^2)*ones(n,1); constant = ones(n,1); null = zeros(n,1); margrade = grade.*null; married = zeros(n,1); xmat = [constant,age,age2,grade,married,margrade]; lnwage0 = xmat*b; % Fitted Regression Line (Married=1) married = ones(n,1); margrade = grade.*constant; xmat = [constant,age,age2,grade,married,margrade]; lnwage1 = xmat*b; plot(grade,[lnwage0,lnwage1]); title('Predicted lnwage of Married & Unmarried Evaluated at Age=25'); xlabel('Grade'); ylabel('lnwage'); % ***************** % SPLINE REGRESSION % ***************** else; % Least Squares Estimation d12 = grade > 12; d16 = grade > 16; gradeless12 = d12.*(grade-12); gradeless16 = d16.*(grade-16); xmat = [constant,age,age2,grade,gradeless12,gradeless16,married]; k = size(xmat,2); b = inv(xmat'*xmat)*(xmat'*lnwage); e = lnwage - xmat*b; s2 = (e'*e)/(n-k); varb = s2*inv(xmat'*xmat); t = b./sqrt(diag(varb)); disp(['Unrestricted Coefficient Vector = ']); disp(num2str(b)); disp([' ']); disp(['t Statistics = ']); disp(num2str(t)); disp([' ']); % Graph Spline Regression grade = (8:0.02:(8+0.02*(n-1)))'; d12 = grade > 12; d16 = grade > 16; gradeless12 = d12.*(grade-12); gradeless16 = d16.*(grade-16); age = 25*ones(n,1); age2 = (25.^2)*ones(n,1); xmat1 = [constant,age,age2,grade,gradeless12,gradeless16,zeros(n,1)]; lnwagehat = xmat1*b; title('Spline Regression of lnwage--Evaluated at Age=25 & Married=0'); xlabel('Grade'); ylabel('lnwage'); plot(grade,lnwagehat); %Hypothesis Test for Constant Slope R1 = [0 0 0 0 1 0 0]; R2 = [0 0 0 0 0 1 0]; R = [R1;R2]; q = [0;0]; F = (R*b - q)'*inv(R*inv(xmat'*xmat)*R')*(R*b - q)/(2*s2); disp(['F Statistic = ' num2str(F')]); end