Странная ошибка при построении функции в R - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть следующая функция:

cost<-function(alpha) {
  ypred<-lda.pred$posterior[,2] # prob of Y=1
  ypred[lda.pred$posterior[,2]>=alpha]=1
  ypred[lda.pred$posterior[,2]<alpha]=0
  y<-dataframe_testsample[,y]
  df<-data.frame(y,ypred)
  row.names(df) <- NULL
  FN <- sum(df$y == '1' & df$ypred == '0')
  FP <- sum(df$y == '0' & df$ypred == '1')
  tot_costs<-FN*10+FP*8
  return(tot_costs)
  }

Это функция для расчета общих затрат на неправильную классификацию класса при использовании линейного дискриминантного анализа (команда lda в R). y и ypred - оба вектора 137x1. Функция рассчитывает количество ложных срабатываний (FP) и ложноотрицательных (FN), а также общую стоимость. Это работает flwaless. Тем не менее, при попытке построить его со следующим

alpha_grid<-seq(0,1,0.01)
plot(alpha_grid,cost(alpha_grid))

я получаю следующее сообщение об ошибке:

Error in xy.coords(x, y, xlabel, ylabel, log) : 
  'x' and 'y' lengths differ
Inoltre: Warning messages:
1: In lda.pred$posterior[, 2] >= alpha :
  longer object length is not a multiple of shorter object length
2: In lda.pred$posterior[, 2] < alpha :
  longer object length is not a multiple of shorter object length

Что здесь происходит?

1 Ответ

1 голос
/ 11 февраля 2020

Ваша функция имеет дело с одним значением альфа в данный момент. Вы можете получить желаемый результат, используя sapply

alpha_grid<-seq(0,1,0.01)
plot(alpha_grid,sapply(alpha_grid, FUN=cost))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...