#### ExerciseBox 25.1 hypotenuse<-function(x1,y1,x2,y2) sqrt((x1-x2)^2+(y1-y2)^2) ### part 1 random Weiss plot(NULL, axes=F, xlim=c(1,1000), ylim=c(1,1000)) n<-150 xdata<-sample(1:1000,n) ydata<-sample(1:1000,n) diameter<-rnorm(n,mean=2,sd=1) diameter<-abs(diameter) points(xdata,ydata,pch=19,col="darkred",cex=diameter*0.2) distances<-matrix(nrow=n,ncol=n) for(i in 1:n){ for(j in 1:n){ distances[i,j]<-hypotenuse(xdata[i],ydata[i],xdata[j],ydata[j]) }} NNDs<-NULL for(i in 1:n) NNDs<-c(NNDs,min(distances[i,which(distances[i,]>0)])) # hist(NNDs, col="darkred") plot(sort(NNDs)^2,-log(1-((1:n)/(n+1))),ylab="Weiss Index",xlab="NND^2",pch=18,main="Weiss plot of anemone spacing") lines(sort(NNDs)^2,-log(1-((1:n)/(n+1))),col="red") ## Part 2 repeating 100 times plot(NULL,ylab="Weiss Index",xlim=c(1,15000),ylim=c(0,5),xlab="NND^2",pch=18,main="Weiss plot of random points") for(k in 1:100){ xdata<-sample(1:1000,n) ydata<-sample(1:1000,n) distances<-matrix(nrow=n,ncol=n) for(i in 1:n){ for(j in 1:n){ distances[i,j]<-hypotenuse(xdata[i],ydata[i],xdata[j],ydata[j]) }} NNDs<-NULL for(i in 1:n) NNDs<-c(NNDs,min(distances[i,which(distances[i,]>0)])) xWeiss<-sort(NNDs)^2 yWeiss<--log(1-((1:n)/(n+1))) lines(xWeiss,yWeiss,col="darkred") } # k 100 replicates ## Part 3 all0wing for real anemone pedaldisc size data<-read.csv("ActiniaXYdata.csv",header=TRUE) data$X<-round(data$X,1); data$Y<-round(data$Y,1) # round(data,1) pdd<-c(4.9,1.3,5.3,1.6,3.9,3.8,1.8,3.5,3,2.9,3,3.9,3,3.3,2.1,4.5,3.2,4.2,6.1,3.8,4,4,3.8,1.5,3.9,4.3,4.1,3.9,1.8,3.2,4.2,3.2,1.9,4,2,3.8,1.5,5.9,3.9,4.1,3,3.6,3.2,3.8,3.9,2.5,5.5,3,1.5,3.9,2.5,4,1.2,4,3.9,3.7,1.8,4.4,3.2,3.9,3.7,3.7,4.4,3.9,4.6,4.2,5,4,4.6,5,3.7,3,4.1,1.5,4,3.2,3,1.7,4,3,3.1,3.8,4.2,5,2,4,4.1,3.9,3.1,3,1.6,3.7,3.5,3,3.8,3.9,4,4.9) data<-cbind(data,pdd) (plot(data, pch=19, xlim=c(0,50),ylim=c(0,50),col="darkred", cex=pdd/1.6, xlab="X coordinate (cm)", ylab="Y coordinate (cm)") #cex is adjusted to scale diameter of anemones rect(0,0,50,50,lty=4,lwd=0.6) hypotenuse2<-function(x1,y1,x2,y2,d1,d2) sqrt((x1-x2)^2 +(y1-y2)^2)-(d1+d2)*0.5 N<-nrow(data) distances<-matrix(nrow=N,ncol=N) #the cells of the matrix are automatically filled with NAs if nothing is specified for (i in 1:N){ for(j in 1:N){ distances[i,j]<-hypotenuse2(data$X[i],data$Y[i],data$X[j],data$Y[j],data$pdd[i],data$pdd[j]) }} NNDs<-NULL for (i in 1:N) NNDs<-c(NNDs, min(distances[i,which(distances[i,]>0)])) RE<-1/(2*sqrt(0.0392)) R<-mean(NNDs)/RE t.test(NNDs, mu=RE) plot(sort(NNDs)^2,-log(1-((1:N)/(N+1))),ylab="Weiss Index",xlab="NND^2",pch=18,main="Weiss plot of anemone spacing") lines(sort(NNDs)^2,-log(1-((1:N)/(N+1))),col="red")