Imputation Procedures I don't completely understand how to impute in the following situation. Consider the following example.  In this example we have a dataframe of students.  For each student we have an IQ score and a measure of hours studied, and we have their final grade.  For now, please ignore the model structure (IE log linked, gamma family).  The question is not dependent on the model structure.
#set seed
set.seed(1517)

#create IQ, hours studied and a grade variable which is a function of IQ and hours studied
IQscore <- rnorm(n = 1000,mean = 100,sd = 15)
hoursStudied<- rgamma(n = 1000,shape = 1,scale = 1.5)
grade <-(IQscore+hoursStudied*.30+runif(1000,min = -5,max=5))
grade<-grade/max(grade)

df<-data.frame(cbind(grade,hoursStudied,IQscore))
summary(df)


m1<-glm(grade~hoursStudied+IQscore,family = Gamma(link='log'),data=df)
summary(m1) 

Now, let us say that we do not have IQ scores for every student.
df$IQscore[sample(x = 1:1000,size = 150,replace = FALSE)]<-NA
    summary(df$grade[is.na(df$IQscore)])

Now, I believe that setting the value of the NA fields to 0 would be advantageous because when we have the "NA" cases then the IQ's will zero out the coefficient, but doing this will add a point mass, at zero, with an average grade equal the average grade of our students with omitted IQ scores.  To counter this we add a variable for the cases when IQ is equal to zero.
df$IQscore[is.na(df$IQscore)]<-0

m2<-glm(grade~hoursStudied+IQscore,family = Gamma(link='log'),data=df)
summary(m2)

m3<-glm(grade~hoursStudied+IQscore+I(IQscore==0),family = Gamma(link='log'),data=df)
summary(m3)

In the above, I added the model fit without the Boolean variable for no score to demonstrate that the model is clearly altered in a negative way by the point mass at zero.
I can't convince myself that this is the correct imputation.  I believe the point mass at zero is still throwing things off.  Can someone either verify that this is correct or help me research better imputation methods?
 A: There are a multitude of other ways to handle these missing values.
A wonderful overview of the subject from Columbia University can be found here. 
First, it's very important to know why the values are missing in the data. Was the data collected in a survey in which respondents failed to answer a question about their IQ? Were IQ tests administered and the students in question were not available for the tests? 
This is important to know because it informs how you can best impute the missing data:
Paraphrasing the paper linked above:
1
Q: Are the values missing completely at random?
If yes, you can remove the whole observation without biasing your sample.
If no, this limits the imputation methods you will want to use and informs your choice of method.
Additional Options for imputation:
I'll discuss a few of the simpler options briefly, but there is no simple answer to the question of how to impute missing data, and it would be a disservice to you to provide only one straightforward (but possibly/probably inapplicable) answer.
If you determine that the values are missing at random, you can remove the observations entirely. The major downside to this approach is the risk that you mis-evaluate the missingness as random when there are, in fact, one or more causal reasons for the missing values, which would bias your sample against those reasons.
Another option would be to replace the missing IQ scores with the Mean or Median of the existing records. The major downside to this approach is a likelihodd of an artificially deflated standard deviation (proportional to the relative percentage of missing observations).
You could also impute the values from "similar observations"- finding observations which are otherwise similar to the observations with missing data and imputing some derived value of the IQ of those observations. This method lends itself to magnifying data-collection error, in that erroneously collected data could be effectively duplicated by this procedure.
Again, there are myriad other imputation methods, each with their benefits and risks. Eventually, you should choose one based on its applicability to your specific problem and its effectiveness on the data in particular.
