# How to use linear regression for heavily skewed purchase data?

I am trying to use multiple linear regression to predict the amount that a particular user will spend in a particular time frame on a particular site. Part of the problem is that there are very few purchasers relative to non purchasers. The other problem is my lack of great features.

You can see below my predictions vs. actual customer spend. Even though the model does not look good, it still has some value as is.

I am wondering if there are any recommended techniques for working with linear regression with this type of data? • Have you considered quantile regression? – Repmat Jun 26 '15 at 20:01
• Or some glm (generalized linear model) for positive responses? – kjetil b halvorsen Jun 26 '15 at 21:00
• I have also used logistic regression. Logistic works slightly better than linear for classification (predicting positive or negative based on a manually chosen threshold), but I want to be able to better predict amount users will spend. Have not tried quantile regression (not familiar with the approach). – DJElbow Jun 26 '15 at 21:08
• Also, have you considered simple log transformation? – Tim Jun 26 '15 at 21:08

I echo the recommendation for quantile regression. I'll flesh that out a little.

First, software: SAS has PROC QUANTREG and R has the quantreg package. There are probably ways to do this in most other statistical software, as well.

Second, the general idea of quantile regression is to model the quantiles rather than the mean.

Third, it has at least three advantages over OLS regression in this particular context:

1. It allows you to model whichever quantile you like. If you want to model the big spenders, you can do that.

2. It makes no assumptions about the distribution of the residuals.

3. If you model a quantile that is higher than the proportion of zero spenders, those zero spenders won't affect the results for those quantiles.

Here is a blog post I wrote on Medium.

Have you considered a generalized linear model (GLM) as an alternative to the linear model you describe?

If your response variable follows some non-Normal distribution (as your data appear to, with much more values between 0 - 1000 than from 1000 to the maximum around 4000).

Give this page on GLMs in R a look: http://www.statmethods.net/advstats/glm.html or explore the glm function.