I am conducting a logistic regression in order to predict the service point win percentage of a tennis player.

In terms of data - I have (for each player A) approx 300 matches - for each match I have the total number of player A service points (points where he is the server), total number of player A service point wins and total number of player A service point losses.

To do so, I have service point win percentage as the DV, and my independent variables are:

+Average service win percentage of last 3 matches
+ln(player's ranking points)
+ln(opposition's ranking points)
+surface the match was played on

My dependent variable data, service win percentage, lies usually in the range of 0.4-0.8, there are pretty much no values greater that 0.8 (about 2.8% of values and this drops to < 1% at around 0.84) and there exists no values less than 0.22. In addition my data is much more concentrated above 0.5 than it is below 0.5.

Thus, I worry that since my data doesn't have points close to zero or 1, and is not symmetrical around 0.5 (like the sigmoidal curve of logistic regression) that I am wasting my time with this model type. The results it is giving for my preliminary model outlined above are, although not shocking, pretty volatile.

I am conducting this in R and using the weights command to allow me use a proportion in the DV, giving the total number of trials as the weights. I use ln(points) because ranking points are exponential in nature.

The goal is to predict / forecast the service point win percentage of the player based on the IV's. Considering my data distribution, and my goal, does logistic regression make sense? If not is there any other type of model that makes more sense?

  • $\begingroup$ Do you know how many serves there were for each player? Ie, when you have 80% wins, do you know if that was 8/10 or 40/50? Do you have multiple data points for players (say from different matches)? $\endgroup$ – gung Aug 12 '15 at 23:58
  • $\begingroup$ @gung yes I have total number of service points for each match, total service points won and total service points lost. From this I get my service win %. I should probably make that clearer in the post, thanks for asking. Yes, I have multiple data points for each player - for example I would have 300 Rafael Nadal matches Each match contributes an observation of service point win % (or if you like, total number of service points, service points won, service points lost etc.) $\endgroup$ – Stevie Kvothe Aug 13 '15 at 0:05
  • $\begingroup$ What do you mean that your results are "pretty volatile"? $\endgroup$ – gung Aug 13 '15 at 1:28
  • $\begingroup$ Can you show a picture of what you mean by "skewed"? $\endgroup$ – Glen_b Aug 13 '15 at 2:02
  • $\begingroup$ @Stevie Kvothe: maybe take a look at the answers to stats.stackexchange.com/questions/164120/…, the weights parameter can be used if you have a priori knowledge about the number of successes and if this prior value is different from the number of success in the sample that you use to estimate the parameters. $\endgroup$ – user83346 Aug 13 '15 at 7:14

Logistic regression looks like a good choice here. You don't need responses centered on 0.5. I'm not so sure about the weights. If you have a column of successes (say r) and a column of trials (total service points), you can do

glm(cbind(r,n-r) ~ IV1 + IV2 + IV3, family=binomial(), data=tennisData)

and the estimation takes care of things.

If each player has several matches and each match has several service points, you might want to include a random effect for matches. A random effect for players is also possible, but you are probably doing better by including past player outcomes in the model. In other words, I doubt you would be able to estimate a player effect in a model that also contains the "average of previous matches" variable. If there is a match effect, it is important to include it so as obtain appropriate confidence intervals for your predictions.


You should be fine. Logistic regression assumes that your response variable is binomial, which yours is. It is not required that your data span a sufficient range of values in any independent variable that the entire sigmoid shape is reproduced.

A different issue is that logistic regression makes no assumptions regarding the distribution of your independent variables. Thus, you do not need to take the log of points, for example (you certainly can if you want to for other reasons, though).

On the other hand, regular old logistic regression assumes the data are independent. Since you have multiple data from the same player, that won't be true. To account for this, you need to fit a mixed effects logistic regression, i.e., a generalized linear mixed model (GLMM).


Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.