Между дисперсией группы R - PullRequest
0 голосов
/ 15 декабря 2018

Я новичок в R и в настоящее время изучаю многомерный набор данных, в частности, этот: http://archive.ics.uci.edu/ml/datasets/Wine

Я нашел в сети функцию, которая вычисляет внутригрупповые и межгрупповые отклонения.Веб-сайт, на который я ссылаюсь, является следующим: https://little -book-of-r-for-multivariate-analysis.readthedocs.io / en / latest / src / multivariateanalysis.html .

Как я уже говорил, функция для внутригрупповой дисперсии работает, однако, когда я пытаюсь использовать функцию для межгрупповой дисперсии, я получаю эту ошибку: Предупреждение: In mean.default (переменная):Аргумент не является числовым или логическим: возвращает NA

Конкретная функция выглядит следующим образом:

calcBetweenGroupsVariance <- function(variable,groupvariable) 


# find out how many values the group variable can take
{ groupvariable2 <- as.factor(groupvariable[[1]])
levels <- levels(groupvariable2)
# calculate the overall grand mean:
numlevel s <- length(levels)
grandmean <- mean(variable) 
# get the mean and standard deviation for each group:
numtotal <- 0
denomtotal <- 0
for (i in 1:numlevels)
      {
         leveli <- levels[i]
         levelidata <- variable[groupvariable==leveli,]
         levelilength <- length(levelidata)

         meani <- mean(levelidata)
         sdi <- sd(levelidata)
         numi <- levelilength * ((meani - grandmean)^2)
         denomi <- levelilength
         numtotal <- numtotal + numi
         denomtotal <- denomtotal + denomi 
      } 
      # calculate the between-groups variance
      Vb <- numtotal / (denomtotal - numlevels) 
      Vb <- Vb[[1]]
      return(Vb)
   }

Любая помощь для исправления этой ошибки будет принята с благодарностью.Спасибо.

...