Given the skew in the data with x, the obvious first thing to do is use a logisitic regression ([wiki link][1]). So I am with whuber on this. Your $y$ data is already [0,1] though: do you know if they represent probabilities or occurrence ratios ? If so, you should try a logistic regression using your non-transformed $y$ (before they are ratios/probabilities). Peter Flom's observation also makes sense given that y is already magically [0,1] but if `plot(density(y));rug(y)` already looks like a Beta distribution it might come back saying that your $x$ variable is not a relevant covariate. That might be the wrong conclusion to make (or it might not - is there a causal relationship between the 2 you know of?). Note that the beta distribution is not an exponential family distribution and thus cannot be modeled with `glm` in R and you should use Peter's suggestion. To give you an idea of what I meant by logistic regression: # the 'real' relationship where y is interpreted as the probability of success y = runif(400) x = -2*(log(y/(1-y)) - 2) + rnorm(400,sd=2) glm.logit=glm(y~x,family=binomial); summary(glm.logit) plot(y ~ x); require(faraway); grid() points(x,ilogit(coef(glm.logit) %*% rbind(1.0,x)),col="red") tt=runif(400) # an example of your untransformed regression newy = ifelse(tt < y, 1, 0) glm.logit=glm(newy~x,family=binomial); summary(glm.logit) # if there is not a good match in your tail probabilities try different link function or oversampling with correction (will be worse here, but perhaps not in your data) glm.probit=glm(y~x,family=binomial(link=probit)); summary(glm.probit) glm.cloglog=glm(y~x,family=binomial(link=cloglog)); summary(glm.cloglog) [1]: https://en.wikipedia.org/wiki/Logistic_regression