library(Zelig)
library(maxLik)
## Loading required package: miscTools
## 
## Please cite the 'maxLik' package as:
## Henningsen, Arne and Toomet, Ott (2011). maxLik: A package for maximum likelihood estimation in R. Computational Statistics 26(3), 443-458. DOI 10.1007/s00180-010-0217-1.
## 
## If you have questions, suggestions, or comments regarding the 'maxLik' package, please use a forum or 'tracker' at maxLik's R-Forge site:
## https://r-forge.r-project.org/projects/maxlik/
data(turnout)
head(turnout)
##    race age educate income vote
## 1 white  60      14 3.3458    1
## 2 white  51      10 1.8561    0
## 3 white  24      12 0.6304    0
## 4 white  38       8 3.4183    1
## 5 white  25      12 2.7852    1
## 6 white  67      12 2.3866    1
ols.lf2 <- function(param) {
  mu <- param[1]
  theta <- param[-1]
  y <- as.vector(turnout$income)
  x <- cbind(1, turnout$educate, turnout$age)
  sigma <- x%*%theta
  sum(dnorm(y, mu, sigma, log = TRUE))
}
library(maxLik)
mle_ols2 <- maxLik(logLik = ols.lf2, start = c(mu = 1, theta1 = 1, theta2 = 1, theta3 = 1) , method = "bfgs"   )
## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced

## Warning in dnorm(y, mu, sigma, log = TRUE): NaNs produced
summary(mle_ols2)
## --------------------------------------------
## Maximum Likelihood estimation
## BFGS maximization, 150 iterations
## Return code 0: successful convergence 
## Log-Likelihood: -4843.15 
## 4  free parameters
## Estimates:
##        Estimate Std. error t value  Pr(> t)    
## mu     3.555011   0.069193  51.378  < 2e-16 ***
## theta1 0.362114   0.204550   1.770   0.0767 .  
## theta2 0.133349   0.010756  12.398  < 2e-16 ***
## theta3 0.017507   0.002852   6.139 8.32e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## --------------------------------------------

The data from the maximum likelihood estimation indicates that both education and age has an impact on the dispersion of income. In this analysis, income is the dependent variable and education and age are the independent variables respectively. Furthermore, theta1, also known as income, is the y-intercept. If we do not account for education and age, the variance of income is .36 and is not statistically significant (P=0.08). However, when we do account for the independent variables, we can observe that both education and age greatly affect the dispersion of income. Moreover, education and age positively influence the dispersion of income. Education in conjunction with age affects the dispersion of income at a substantial rate. However, although the effect of education on the dispersion of income (P<0.01) and the effect of age on the dispersion of income (P<0.01) are both statistically significant, education has a more considerable effect on income than age. Strictly speaking, education (0.13) has a much greater effect on the dispersion of income relative to age (0.02). While age does increase income, it does so at a much slower rate. This suggests that individuals should seek higher levels of educational attainment to retain or obtain a high income rather than relying on age alone. Overall, both demographic variables greatly influence income as determined by education and age.