Ryan Rothman - 1 year ago 359

R Question

I have some categorical data showing plant family, fruit type, fruit colour, and seed dispersal, where the response variable (Dispersal) is either 0 for no or 1 for yes.

`test1.3`

FAMILY FRUIT_TYPE COLOUR_RF Dispersal

3 Erythroxylaceae D R 1

4 Lamiaceae D G 1

8 Clusiaceae D Y 1

12 Clusiaceae D Y 1

16 Myrtaceae D R 1

19 Rubiaceae D R 0

22 Anacardiaceae D Br 1

25 Melastomataceae D R 1

29 Moraceae F Y 1

32 Moraceae F Br 1

35 Fabaceae C Br 1

37 Lauraceae D PG 1

39 Sapindaceae D Br 1

41 Myrtaceae D R 1

43 Moraceae D G 1

45 Clusiaceae D Y 1

51 Moraceae F Y 1

52 Lauraceae D R 0

54 Rubiaceae D Y 0

57 Euphorbiaceae D PY 0

75 Dichapetalaceae D Y 1

83 Moraceae F R 1

86 Myrtaceae D Y 1

91 Solanaceae D Y 1

94 Myrsinaceae D Y 1

98 Connaraceae D O 1

101 Ochnaceae C R 1

104 Proteaceae D Br 0

107 Clusiaceae D R 1

114 Clusiaceae D P 1

116 Clusiaceae D P 1

119 Smilacaceae D R 1

124 Apocynaceae D Y 1

129 Apocynaceae D Br 1

138 Icacinaceae D Y 0

141 Moraceae D Y 1

144 Myrsinaceae D R 0

147 Pittosporaceae D O 1

150 Sapindaceae C O 1

154 Fabaceae C Y 1

158 Aphloiaceae C W 1

169 Celastraceae D O 1

176 Oleaceae D P 0

179 Rubiaceae D Y 0

182 Meliaceae D R 0

186 Apocynaceae C PY 1

188 Salicaceae D R 1

192 Burseraceae D Br 0

195 Araceae D Y 0

198 Rubiaceae D P 1

202 Rutaceae D O 1

206 Torrecilliaceae D PY 0

214 Arecaceae D PY 1

220 Rutaceae D PY 0

223 Rubiaceae D DR 0

230 Rubiaceae D B 0

237 Clusiaceae D Y 1

244 Myrsinaceae D R 1

247 Melastomataceae D R 0

250 Aquifoliacea D R 1

260 Marsaceae D W 1

263 Vitaceae D DR 0

266 Lamiaceae D B 0

278 Hypericaceae D O 1

281 Cannelaceae D Y 0

283 Rubiaceae D R 1

289 Sapotaceae D Br 1

293 Lauraceae D R 0

343 Sapindaceae D O 0

344 Lauraceae D P 0

362 Clusiaceae D Gr 1

366 Anacardiaceae D Br 1

370 Lauraceae D P 1

374 Lauraceae D R 0

399 Lauraceae D R 0

405 Lauraceae D R 0

I am performing binomial GLMs and am using the MuMIn package to 'dredge' a global model.

`Global<-glm(Dispersal~FAMILY+COLOUR_RF+FRUIT_TYPE+COLOUR_RF*FRUIT_TYPE+COLOUR_RF*FAMILY, family=binomial(link="logit"), na.action="na.fail", data=test1.3)`

When I try to plot the most significant model based on AICc weight (as I have done many times before with other iterations), I get the warning error:

`library(MuMIn)`

x<-dredge(Global)

Fixed term is "(Intercept)"

Warning messages:

1: glm.fit: fitted probabilities numerically 0 or 1 occurred

2: glm.fit: fitted probabilities numerically 0 or 1 occurred

3: glm.fit: fitted probabilities numerically 0 or 1 occurred

4: glm.fit: fitted probabilities numerically 0 or 1 occurred

5: glm.fit: algorithm did not converge

6: glm.fit: fitted probabilities numerically 0 or 1 occurred

7: glm.fit: fitted probabilities numerically 0 or 1 occurred

8: glm.fit: fitted probabilities numerically 0 or 1 occurred

9: glm.fit: fitted probabilities numerically 0 or 1 occurred

par(mfrow=c(1,1))

par(mar = c(5,5,14,5))

plot(subset(x, delta <2), labAsExpr = T, xlab=c("Predictor Variables for 'P. edwardsi' Dispersal"), ylab=c(expression(paste("Model Number by Cumulative Akaike Weight ", (omega) ))))

`"Error in pal[, 1L + ((i - 1L)%%npal)] : incorrect number of dimensions"`

Does anyone know why this is occurring? I have used the same code for many other iterations (i.e. changing the response variable) and have had no previous issues.

Recommended for you: Get network issues from **WhatsUp Gold**. **Not end users.**

Answer Source

This is the output of the top of the str() call on the object you are sending to `plot()`

:

```
> xsub <- subset(x, delta <2)
> str(xsub)
Classes ‘model.selection’ and 'data.frame': 1 obs. of 11 variables:
$ (Intercept) : num 17.6
$ COLOUR_RF : Factor w/ 1 level "+": NA
$ FAMILY : Factor w/ 1 level "+": NA
$ FRUIT_TYPE : Factor w/ 1 level "+": 1
$ COLOUR_RF:FAMILY : Factor w/ 1 level "+": NA
$ COLOUR_RF:FRUIT_TYPE: Factor w/ 1 level "+": NA
$ df : int 3
$ logLik : num -44.3
$ AICc : num 94.8
$ delta : num 0
$ weight : num 1
```

I suspect you have simply made a restrictive call that doesn't provide as much information as needed for the plotting function to do any useful work. Using `subset(x, delta <5)`

succeeds.

Recommended from our users: **Dynamic Network Monitoring from WhatsUp Gold from IPSwitch**. ** Free Download**