Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R如何快速获得logistic回归的决策边界_R_Glm - Fatal编程技术网

R如何快速获得logistic回归的决策边界

R如何快速获得logistic回归的决策边界,r,glm,R,Glm,我们知道如何为逻辑回归和其他分类器方法绘制决策边界,但是,我对绘制不感兴趣;但是我想要的是二项式预测的精确值,是.50 例如: train=data.frame(1:20) train$response=rep(1:0,10) model=glm(response ~ poly(X1.20, 2), data=train, family=binomial) train$X1.20[1]=10.5 predict(model, train[1,], type="response") 给我留下

我们知道如何为逻辑回归和其他分类器方法绘制决策边界,但是,我对绘制不感兴趣;但是我想要的是二项式预测的精确值,是.50

例如:

train=data.frame(1:20)
train$response=rep(1:0,10)
model=glm(response ~ poly(X1.20, 2), data=train, family=binomial)


train$X1.20[1]=10.5
predict(model, train[1,], type="response")

给我留下了一个10.5的决策边界,我可以通过predict()函数的反复试验找到它,这意味着自变量的值为10.5,得到的响应正好是0.50。是否有一种自动的方法来确定什么值会给出.50的响应?

您应该使用这样一个事实,即logit模型的预测值为零意味着响应概率为0.5。因此,您可以尝试找到一个值
x
,使预测值尽可能接近零。此处
deviationFromZero()
查找给定
x
的任何值时,模型的预测值离零的距离

df <- data.frame(x = 1:20, response = rep(1:0, 10))
model <- glm(response ~ poly(x, 2), data = df, family = binomial)
deviationFromZero <- function(y) abs(predict(model, data.frame(x = y)))
boundary <- optimize(f = deviationFromZero, interval = range(df$x))

boundary
$minimum
[1] 10.5

$objective
           1 
1.926772e-16 

df对于其他对此感兴趣的人,使用nlm()而不是optimize()可能会提高速度,但是您必须确保将函数包装在sum()中,使其看起来像sum(abs(predict))(..@JamesH你是对的,我认为
nlm
肯定会更快。在这种情况下,基于梯度的方法会更快,因为一切都是好的和连续的。
optimize
做了一些类似网格搜索的事情,所以速度会慢一点(但根据我的经验,在其他情况下会更稳健一点)。