使用glm预测0到1之间的连续变量family = binomial(link ='logit')会产生错误

时间:2019-03-03 18:43:43

标签: r logistic-regression glm

我正在尝试使用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 :(得分:2)

建议您尝试:

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)

答案 1 :(得分:0)

我在这里发现了问题-深入研究数据后,有少量行的y的负值非常小(可能由于舍入误差),例如:

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

但是,这些超出范围的值不会显示在摘要中。