6
$\begingroup$

We are having problems running generalized linear models with proportional data.

For example, we have data like this:

Species  Trait(Diet)   IndividualsinForest   TotalIndividuals   ProportionForest 
X        Insectivore   300.5                 500.7              0.60             
Y        Frugivore      32.3                  47.6              0.67              

And we want to determine whether trait influences the proportion of individuals in forest. Note that the individual numbers are continuous (have decimals), because the original counts have been DISTANCE-adjusted.

Most on the models that we have seen in R deal with count data. For example, see M.J. Crawley Statistics: An Introduction using R, Chapter 10: Analyzing proportion data (pdf).

These models use the cbind statement to bind together the number of successes and the number of failures and then relate that to the predictor:

model.1 <- glm (cbind(IndividualsinForest, (TotalIndividuals-IndividualsinForest))~Diet, 
                family=binomial)

However, there seems to be two problems to using this approach for our situation:

  1. We are using glm on a cbind that combined vectors with continuous (decimal point) values; it is not clear whether this is allowed, although it runs in R. We have played around with multiplying everything by 1000 to get rid of the decimals, but find the results change a lot with such a technique (very different results if multiply by 10, by 100, by 1000)

  2. cbind runs a weighted regression, as explained by Crawley. This means that the model will weight the data of Species X, above, with 500.7 total individuals more heavily than the data of Species Y, with 47.6 individuals.

But conceptually, we do not want a weighted regression, because we want to treat all species equally: a rare species’ data is as important to us as an abundant species’ data. Species is the unit of replication here.

We tried to force a non-weighted regression using the same code, by adding columns to the data, for example,

Species   ProportionForest   PInForest   PTotal 
X         .60                60          100 
Y         .67                67          100 

And then running:

model.3 <- glm(cbind(PInForest, (PTotal-PInForest))~Diet, family=binomial)

But the resulting analyses are very overdispersed, and running them with family=quasibinomial gives strange results (completely non-sensitive tests, with large p-values for fairly clear differences).

Hence our current analytical strategy is to fall back on arcsine transforming the proportion and then running a general linear model. But we'd prefer though to run a generalized linear model because the arcsine transformation seems to be a relict of old pre-computer statistics.

Any ideas?

$\endgroup$
4
  • 3
    $\begingroup$ I don't follow the nature of your data. It sounds to me like you have counts that were adjusted (with 'distance' somehow). Is there a max that is meaningful a-priori? Eg, if I flip a coin 10 times, I may get 5 heads, but there is a very clear sense in which 10 was the max # of heads possible (discrete proportion). Or if an organ is taken from a cadaver & weighed, & the tumor is excised & weighed, the max # of grams possible would be the mass of the organ (continuous proportion). OTOH, if this is how many squirrels there are in a forest, it's not clear what the max # of possible squirrels is. $\endgroup$ Nov 22, 2013 at 17:53
  • $\begingroup$ Hi, I'm sorry. I glossed over the nature of the data. I'm counting birds on multiple transects (independent lines you walk to count birds). Because different species of birds have different detectabilities, I use "DISTANCE" sampling to estimate the true number of birds that was there (detected + undetected). After that, I also adjusted by sampling (calculated in hectares, which represents the amount each transect was walked). So I come down to a "bird per ha" value for each species. Often the numbers are low, below 1 (perhaps my examples above are not indicative of this). $\endgroup$ Nov 23, 2013 at 0:49
  • $\begingroup$ The analyses are all asking what proportion one particular type of birds (say those that are eating insects) are of the total birds in a forest. I run some analyses on the number of species, and some on abundances... $\endgroup$ Nov 23, 2013 at 0:51
  • $\begingroup$ I have a similar problem and I would like to ask whether you have found a solution. As far as I understand, the fractional response models are the best choice but there is no ready-to-use R functions for it. $\endgroup$
    – Zhenglei
    Aug 3, 2015 at 7:58

1 Answer 1

7
$\begingroup$

Generalized linear models for responses that are continuous proportions are well known in at least some literatures and well supported in at least some software. I will leave to others with R expertise to comment on how far and/or how well they are supported by R.

A friendly miniature review is offered by Baum in http://www.stata-journal.com/sjpdf.html?articlenum=st0147: although of use beyond the Stata community, this paper does underline that such models are well supported by Stata.

The literature can be extended back at least as far as Wedderburn in 1974 http://biomet.oxfordjournals.org/content/61/3/439.full.pdf+html

and sideways to include an account in Wooldridge's more advanced book http://www.amazon.com/Econometric-Analysis-Cross-Section-Panel/dp/0262232588/

Whether this what R calls "quasibinomial" again I leave to others who know R well.

An alternative is to use beta regression.

I agree with the implication that arcsine transformation at best offers a partial solution here; it is preferable to have an integrated approach in which modelling is centred on respecting the range of the response variable.

$\endgroup$
1
  • $\begingroup$ Nick, many thanks; this is very helpful. I'll look at these papers, and beta regression, too. $\endgroup$ Nov 23, 2013 at 0:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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