[R] geomorph: adding confidence ellipses

taze4 at web.de taze4 at web.de
Tue Dec 22 08:57:38 CET 2015


Hello everyone,
I’m currently working with package geomorph in R to generate a PCA plot. Now I want to add confidence ellipses to my plot. I couldn’t find any command integrated in package geomorph for doing this.
So I tried package vegan for adding confidence ellipses but the command does not work with geomorph as my data is a 3D-array (for the PCA) and vegan needs a 2D-array for creating confidence ellipses. Changing the data from 3D to 2D doesn’t work either as in this case I can’t plot the PCA at all.

Does anyone know a command in geomorph for confidence ellipses or a package compatible with geomorph for adding confidence ellipses?

Technical details: I am currently working with RStudio Version 0.99.484

My code so far:
library(rgl)
library(ape)
library(geomorph)

morpho<-readland.tps(file,specID="ID") #adding my data#
classifiers<-read.table(file,header=T) #adding the classifiers#
attach(classifiers)

morpho.gpa<-gpagen(morpho, pointscale=1,ShowPlot=T) #doing the Procrustes Fit#
plotTangentSpace(morpho,axis1=2,axis2=3,label=T,group=classifiers$Stretch) #plotting the PCA with Stretch as group, there are 4 different levels in group#

Now I want to add confidence ellipses. As I know no command in geomorph, I used vegan:
library(lattice)
library(permute)
library(vegan)
ordiellipse(morpho,classifiers$Stretch,kind="sd",conf=0.95)

This gives me the following error message:
Error in ordiellipse(morpho, classifiers$Stretch, kind = "sd", conf = 0.95) : 
  ordiellipse needs two dimensions

My data for the PCA is a 3D-array:
dim(morpho) #asking if data is 3D or 2D, as my command returns 3 values, the data  is in the form of a 3D-array#
[1] 16  2 88

Changing my data into a 2D-array does not solve the problem, because then I am unable to plot the PCA at all:
morpho2D<-two.d.array(morpho.gpa$coords)
plotTangentSpace(morpho2D,axis1=2,axis2=3,label=T,group=classifiers$Stretch)
Error in plotTangentSpace(morpho2D, axis1 = 2, axis2 = 3, label = T, group = classifiers$Stretch) : 
  Data matrix not a 3D array (see 'arrayspecs').

I am grateful for any help on this topic!
Kind regards,
Tatze


This is what my data looks like:
morpho[,,1] #I have 16 landmarks per fish, in total 87 fish; each of the 16 landmarks is given as coordinates#
          [,1]     [,2]
 [1,] 3.632444 4.795980
 [2,] 4.767132 4.726264
 [3,] 5.428232 4.735880
 [4,] 8.721712 3.935348
 [5,] 9.810724 3.899288
 [6,] 9.844380 2.704500
 [7,] 8.361112 2.716520
 [8,] 5.750368 2.646804
 [9,] 3.240592 2.488140
[10,] 3.440124 3.074716
[11,] 3.663696 4.344028
[12,] 2.995384 4.358452
[13,] 1.382300 4.211808
[14,] 0.613020 3.673312
[15,] 1.447208 3.137220
[16,] 2.055420 2.853548

head(classifiers)
  ID   Nr TotalLength Weight Sex Stretch riverbank  centroid
1  0 L010        11.5   15.0   1     Kel     Kel_l 12.180512
2  1 L094         8.0    7.4   1     Reg     Reg_r  8.459462
3  2 L033         9.6   12.6   1    Vils    Vils_r 10.262179



More information about the R-help mailing list