Ryan Rothman Ryan Rothman - 3 months ago 16
R Question

R error: Incorrect number of dimensions

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.

42- 42-
Answer

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.

Comments