使用 glm 预测 0 和 1 之间的连续变量 family=binomial(link='logit') 给出错误
Using glm to predict continuous variables between 0 and 1 family=binomial(link='logit') gives error
我正在尝试使用 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"
我在这里发现了问题 - 在深入研究数据后,有少量行的 y 值非常小,为负值(可能是由于舍入误差),例如:
> test_data[276,]
# A tibble: 1 x 2
y x
<dbl> <dbl>
1 -1.47e-17 0
但是,这些超出范围的值不会显示在摘要中。
建议你试试:
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)
我正在尝试使用 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"
我在这里发现了问题 - 在深入研究数据后,有少量行的 y 值非常小,为负值(可能是由于舍入误差),例如:
> test_data[276,]
# A tibble: 1 x 2
y x
<dbl> <dbl>
1 -1.47e-17 0
但是,这些超出范围的值不会显示在摘要中。
建议你试试:
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)