Использование glm для прогнозирования непрерывных переменных между 0 и 1 family = binomial (link = 'logit') дает ошибку - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь использовать glm для оценки логистической регрессии по непрерывной переменной между 0 и 1, используя следующий код, но получаю прикрепленную ошибку:

> glm(y ~ x, data=test_data, family=binomial(link = 'logit'))
Error in eval(family$initialize) : y values must be 0 <= y <= 1

Однако, когда я делаюСводка по test_data, у df есть значения y, которые полностью находятся в диапазоне от 0 до 1 ...

> summary(test_data)
       y                  x         
 Min.   :0.000000   Min.   :0.0000  
 1st Qu.:0.001510   1st Qu.:0.0000  
 Median :0.003664   Median :1.0000  
 Mean   :0.025847   Mean   :0.5386  
 3rd Qu.:0.009054   3rd Qu.:1.0000  
 Max.   :1.000000   Max.   :1.0000

Может кто-нибудь помочь мне понять, в чем здесь проблема?Если я проверю тип переменных, они оба будут числовыми:

> class(test_data$y)
[1] "numeric"
> class(test_data$x)
[1] "numeric"

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Предлагаем попробовать:

which(as.numeric(test_data$x) < 0 | as.numeric(test_data$x) > 1)
which(as.numeric(test_data$y) < 0 | as.numeric(test_data$y) > 1)
0 голосов
/ 03 марта 2019

Я обнаружил проблему здесь - после детализации данных имеется небольшое количество строк с очень маленькими отрицательными значениями y (вероятно, из-за ошибок округления), например:

> test_data[276,]
# A tibble: 1 x 2
          y     x
      <dbl> <dbl>
1 -1.47e-17     0

Однако эти значения за пределами допустимого диапазона не отображаются в итоге.

...