I have a dataset that contains records of donors with various biographical info (city, state, zip, number of children) and the total amount they donated over 10 years. Some never donated and thus the total amount is $0. Not all records contain all the bio info, so there are missing values. An example would be as follows:

enter image description here

My goal is to determine which factors affect the donation. In other words, looking at a potential donor I want to predict whether he/she would donate. I tried regression, but that didn't work ($R^2 = 14\%$).

General ANOVA also does not seem to be working. Aside from pretty poor model, I clearly cannot validate it as it's normal probability plot is S-shaped (which is expected since the majority of records have response "Total" = 0).

What can I do to proceed with this further?


I will have about 50 factors, but also a lot of missing data. I don't know ahead of time whether I even have data for some of these factors. I could probably do some preprocessing and exclude the factors for which I don't have sufficient data. I will still have missing values. So, this would potentially reduce the number of factors to 20.

Main questions that I'm trying to answer:

  1. Given the data for a new donor, what is the probability that he/she donates?
  2. Given the data for a new donor, how much will he donate?
  3. What are the factors (and the needed levels) that would increase the chance of donation?
  4. What are the factors (and the needed levels) that would increase the amount of donation?


  1. Results for General Linear Model Anova - all factors, using the total amount donated as a response

    • most of the factors "cannot be estimated and were removed", leaving us with 20 factors

    • out of 14532, 600 rows were unused

    Model Summary

            S    R-sq  R-sq(adj)  R-sq(pred)
      22715.8  26.59%     17.56%           *

The results are pretty interesting, detecting about 20 significant factors (out of 150). However, the normal probability plot of residuals is S-shaped (which makes sense since the majority of records have a response = 0). Data transformation techniques used to normalize the residuals require positive responses, so I'm stuck :)


There were several comments about regression and ANOVA. My problem is still with the normality. Residuals don't seem to be normal and I'm having problems transforming the data because of "0" response values:

enter image description here

  • $\begingroup$ Might your $R^2$ have been $0.14$? How much data do you have? How many rows are there w/ complete information? $\endgroup$ – gung Mar 19 '15 at 17:22
  • $\begingroup$ @gung, yes, its' 14%=0.14 but only for 2 factors. I have 20 000 records, about 50 potential factors, but most of the records will have some missing values. Again, the goal is to be able to predict whether a given donor will give given the info about him: city, zip, # of children, etc. Shall I treat those who never gave somehow differently from others? Unfortunately, I cannot do any data transformation because of these $0 values. $\endgroup$ – user19754 Mar 19 '15 at 17:57
  • $\begingroup$ How many rows do you have with complete information? $\endgroup$ – gung Mar 19 '15 at 18:00
  • $\begingroup$ I don't think I have a single row with all 50 factors populated. $\endgroup$ – user19754 Mar 19 '15 at 18:15
  • $\begingroup$ Your question is a little ambiguous, you have 2 conflicting goals: amount of donation vs donates / doesn't. Can you clarify which you are interested in? $\endgroup$ – gung Mar 19 '15 at 19:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.