Multiple linear regression on skewed Likert data (both $Y$ and $X$s) - justified?

I'm trying to run a regression on Likert (1-5) data. My dependent variable $Y$ is customer satisfaction and the 10 independent variables are ratings of various attributes (price, ease of use, etc.). The data come from a survey. The problem is, everyone is either satisfied (300/800) or very satisfied (450/800), making the data extremely left-skewed. The $X$'s also more or less behave like that.

The results of the regression seem sensible, but I keep wondering if it's justified to run in on data like that. I know that linear regression only requires that the residuals be normally distributed (which they are), but I thought skewness messes with OLS (I'm doing this in R with the lm function, perhaps it automatically takes care of that?)

I don't think it makes sense to apply any transformations to an ordinal scale like that, but I feel uneasy about my results and am wondering how they could be improved? I'd like to stick to a linear model if possible, because that's what I'm most familiar with. What should I look into? Any suggestions or references are welcome.

If a linear model is really not salvageable, I'm guessing I should try some kind of ordinal regression - would be grateful for any advice on the best way to go about that in R.

EDIT: I should add that I'm mostly interested in qualitative results, i.e. which attributes are significant and how they roughly rank.

• +1. Ultimately, perhaps the best resolution is to use a much finer scale of customer satisfaction.
– whuber
Apr 13, 2018 at 16:07
• How was customer satisfaction measured? What sample was taken? What is the goal of this regression? Apr 13, 2018 at 16:21
• ¿Have you thought about an ordinal regression model? Apr 13, 2018 at 21:01
• The ordinal package makes ordinal regression relatively easy in R. There are a few tricks, tho, so make sure you find a good example. In general, read the package documentation and vignettes; they are pretty good. One important thing is that the dependent variable has to be an ordered factor. car::Anova can be used, but only with the RVAideMemoire package, and the packages have to called in order. emmeans can be used for group separations. There are tests of assumptions with the nominal_test and scale_test functions. Apr 13, 2018 at 22:01
• @PeterFlom It was a survey. Each respondent rated their satisfaction with their provider, and also how the provider ranks in 10 categories (price, ease of use, etc.) on a scale of 1-5. The goal is to figure out the most relevant drivers of customer satisfaction. The sample consists of 800 respondents from 4 countries, i.e. 200 per country. Apr 14, 2018 at 17:02