Как написать функцию для расчета индекса H в R? - PullRequest
2 голосов
/ 21 мая 2019

Я новичок в R и ищу способ расчета индекса h.

Индекс H является популярной мерой для количественной оценки научной продуктивности.Формально, если f - это функция, которая соответствует количеству ссылок для каждой публикации, мы вычисляем индекс h следующим образом:

Сначала мы упорядочиваем значения f от наибольшего до самого низкого значения,Затем мы ищем последнюю позицию, в которой f больше или равна позиции (мы называем h этой позицией).

Например, если у нас есть исследователь с 5 публикациями A, B, C, D и E с 10, 8, 5, 4 и 3 цитатами соответственно, индекс h равен 4, потому что4-я публикация имеет 4 цитаты, а 5-я содержит только 3. Напротив, если в одних и тех же публикациях 25, 8, 5, 3 и 3 цитаты, индекс равен 3, поскольку в четвертой статье только 3 цитаты.

Может кто-нибудь предложить более разумный способ решить эту проблему

a <- c(10,8,5,4,3)

Я ожидаю, что значение индекса h будет равно 4.

1 Ответ

3 голосов
/ 21 мая 2019

Предполагая, что входные данные уже отсортированы, я бы использовал это:

tail(which(a >= seq_along(a)), 1)
# [1] 4

Конечно, вы можете поместить это в небольшую функцию:

h_index = function(cites) {
  if(max(cites) == 0) return(0) # assuming this is reasonable
  cites = cites[order(cites, decreasing = TRUE)]
  tail(which(cites >= seq_along(cites)), 1)
}

a1 = c(10,8, 5, 4, 3)
a2 = c(10, 9, 7, 1, 1)

h_index(a1)
# [1] 4

h_index(a2)
# [1] 3

h_index(1)
# [1] 1

## set this to be 0, not sure if that's what you want
h_index(0)
# [1] 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...