Скрипт на R для работы - Часть I
# ввожу данные из файла
transecta <- read.csv(file = (description = "e:/transecta.csv"),
sep = ";", h=F, dec = ",")
transecta[is.na(transecta=='NA')] <- 0
# считываю данные по первым двум точкам в векторы
pp_1 <- transecta[, 1]
pp_2 <- transecta[, 2]
# рассчитываю меру Коуди
# задаю счётные переменные
g <- 0
l <- 0
# начинаю цикл
for(i in 1:length(pp_1)) {
ifelse(pp_1[i] == 0 & pp_2[i] != 0, g <- g + 1, g <- g)
ifelse(pp_1[i] != 0 & pp_2[i] == 0, l <- l + 1, l <- l)
}
b_C <- (g + l) / 2 # считаю итоговое значение
# рассчитываю меру Уилсона и Шмиды
# задаю счётные переменные
g <- 0
l <- 0
# начинаю цикл
for(i in 1:length(pp_1)) {
ifelse(pp_1[i] == 0 & pp_2[i] != 0, g <- g + 1, g <- g)
ifelse(pp_1[i] != 0 & pp_2[i] == 0, l <- l + 1, l <- l)
}
# определяю число видов на каждой точке
S_1 <- length(pp_1) - length(which(pp_1 == 0))
S_2 <- length(pp_2) - length(which(pp_2 == 0))
b_WS <- (g + l) / (S_1 + S_2) # считаю итоговое значение
# рассчитываю меру Уиттекера
S <- 0 # задаю счётную переменную
# начинаю цикл
for(i in 1:length(pp_1)) {
ifelse(pp_1[i] != 0 | pp_2[i] != 0, S <- S + 1, S <- S)
}
# определяю число видов на каждой точке
S_1 <- length(pp_1) - length(which(pp_1 == 0))
S_2 <- length(pp_2) - length(which(pp_2 == 0))
b_W <- S / (((S_1 + S_2) / 2) - 1) # считаю итоговое значение
# рассчитываю первый вариант меры Ратледжа
# задаю счётные переменные
S <- 0
r <- 0
# начинаю цикл
for(i in 1:length(pp_1)) {
ifelse(pp_1[i] != 0 | pp_2[i] != 0, S <- S + 1, S <- S)
for(j in 1:length(pp_1)) {
ifelse(pp_1[i] != 0 & pp_2[j] != 0, r <- r + 1, r <- r)
}
}
b_R1 <- ((S^2) / (2 * r + S)) - 1 # считаю итоговое значение
# рассчитываю второй вариант меры Ратледжа
# задаю пустой вектор и счётную переменную
e_vector <- NULL
e <- 0
# начинаю цикл для определения e
for(i in 1:length(pp_1)) {
ifelse(pp_1[i] != 0, e <- e + 1, e <- e)
ifelse(pp_2[i] != 0, e <- e + 1, e <- e)
e_vector[i] <- e * log(e)
e <- 0
}
e_vector <- e_vector[!is.na(e_vector)]
# определяю a
a_1 <- length(pp_1) - length(which(pp_1 == 0))
a_2 <- length(pp_2) - length(which(pp_2 == 0))
a <- a_1 * log(a_1) + a_2 * log(a_2)
# считаю итог
b_R2 <- log(a_1 + a_2) - 1 / (a_1 + a_2) * sum(e_vector) - 1 / (a_1 + a_2) * a
# рассчитываю третий вариант меры Ратледжа
# задаю пустой вектор и счётную переменную
e_vector <- NULL
e <- 0
# начинаю цикл для определения e
for(i in 1:length(pp_1)) {
ifelse(pp_1[i] != 0, e <- e + 1, e <- e)
ifelse(pp_2[i] != 0, e <- e + 1, e <- e)
e_vector[i] <- e * log(e)
e <- 0
}
e_vector <- e_vector[!is.na(e_vector)]
# определяю a
a_1 <- length(pp_1) - length(which(pp_1 == 0))
a_2 <- length(pp_2) - length(which(pp_2 == 0))
a <- a_1 * log(a_1) + a_2 * log(a_2)
# считаю итог
b_R2 <- log(a_1 + a_2) - 1 / (a_1 + a_2) * sum(e_vector) - 1 / (a_1 + a_2) * a
b_R3 <- exp(b_R2) - 1