# R/weight.edges.R In AEM: Tools to construct Asymmetric eigenvector maps (AEM) spatial variables

#### Documented in weight.edges

```weight.edges <-
function(nb.object, coords, distmat=NULL, alpha=2, beta=NULL, max.d=NULL,
unit.angle="degrees", rot.angle=0, rm.same.y=TRUE, plot.connexions=TRUE)
{
### Olivier Gauthier, Pierre Legendre and F. Guillaume Blanchet - August 2013
##########################################################################################
### General check-up
if(ncol(coords)!=3){
stop("'coords' needs to have three columns")
}
if(is.character(coords[,1])){
stop("The first column of 'coords' needs to be numeric")
}else{
coords<-as.matrix(coords)
}

if(rot.angle == 0){
if (unit.angle == "degrees" | unit.angle == "radians") {
rot.angle<-0
}else{
stop("Units for angles must be either 'degrees' or 'radians'")
}
}

if(is.null(distmat)){
}else{
}
if(is.null(max.d)){
print("The default value for 'max.d' was used. The weights may not be optimum")
}

### Construct the links matrix
links <- listw2sn(nb2listw(nb.object, zero.policy = TRUE))[, 1:2]

### Rotate the coordinates
if(missing(unit.angle)){
unit.angle<-"degrees"
}

if(rot.angle != 0){
if (unit.angle == "degrees") {
rot.angle <- pi/180 * rot.angle
}else{
if (unit.angle == "radians") {
rot.angle <- rot.angle
}else{
stop("Units for angles must be either 'degrees' or 'radians'")
}
}
}

coords[, 2:3] <- round(rotation(as.matrix(coords[, 2:3]), rot.angle), digits = 8)

### Remove edges perpendicular to the directional gradient
if(rm.same.y == TRUE) {
}

low.y <- which(coords[, 3] == min(coords[, 3]))

### Plot connexion diagram
if(plot.connexions) {
xy.range<-apply(coords[,2:3],2,range)

xy.range.min<-xy.range[1,2]-((xy.range[2,2]-xy.range[1,2])/5)
xy.range.max<-xy.range[2,2]

par(mar=c(1,1,1,1))
plot(coords[, 2:3], pch = 20, asp = 1, cex = 0.5, axes = FALSE, xlab = "", ylab = "", ylim=c(xy.range.min,xy.range.max))
segments(x0 = coords[links[, 1], 2], y0 = coords[links[, 1], 3], x1 = coords[links[, 2], 2], y1 = coords[links[, 2], 3], col = "red")
text(coords[,2:3],labels=as.character(coords[,1]),pos=2,col="red")

site0<-c(mean(coords[,2]),xy.range.min)

points(site0[1],site0[2],pch=19,col="blue")
segments(x0=site0[1],y0=site0[2],x1=coords[low.y,2],y1=coords[low.y,3],col="blue")
par(mar=c(5,4,4,2))
}

### Reorganize the edges
n.low.y <- length(low.y)

### Remove edges directly linked with site 0

### Find the length of each edge
}

### Calculate the weight associated to each edge
if (is.null(beta)) {
# First weighting function, Legendre & Legendre (2012, eq. 14.3)
w <- 1 - (links.length/max.d)^alpha
} else {
# Second weighting function, Legendre & Legendre (2012, eq. 14.4)
w <- 1 / links.length^beta
}
w
}
```

## Try the AEM package in your browser

Any scripts or data that you put into this service are public.

AEM documentation built on May 31, 2017, 3:31 a.m.