[英]Fit binomial GLM on probabilities (i.e. using logistic regression for regression not classification)
我想使用逻辑回归来实际执行回归而不是分类。
我的响应变量是 0 到 1 之间的数字,而不是分类变量。 该响应变量是不相关的任何形式的二项式过程。 特别是,没有“成功”,没有“试验次数”等。它只是一个实际变量,根据情况取 0 到 1 之间的值。
这是一个最小的例子来说明我想要实现的目标
dummy_data <- data.frame(a=1:10,
b=factor(letters[1:10]),
resp = runif(10))
fit <- glm(formula = resp ~ a + b,
family = "binomial",
data = dummy_data)
此代码发出警告然后失败,因为我试图适应“错误类型”的数据:
在 eval(family$initialize) 中:二项式 glm 中的非整数 #successes!
但我想一定有办法,因为family
的帮助说:
对于二项式和拟二项式族,可以通过以下三种方式之一指定响应: [...] (2) 作为值介于 0 和 1 之间的数值向量,解释为成功案例的比例(案例总数由权重给出)。
不知何故,相同的代码使用"quasibinomial"
作为家庭,这让我认为可能有一种方法可以使其与二项式 glm 一起使用。
我知道可能性是假设 $y_i$ 在 ${0, 1}$ 中得出的,但是,从数学上看,似乎对数似然对于 $[0, 1] 中的 $y_i$ 仍然有意义$. 我错了吗?
这是因为您正在使用二项式族并给出错误的输出。 由于选择的家庭是二项式的,这意味着结果必须是 0 或 1,而不是概率值。
此代码工作正常,因为响应是 0 或 1。
dummy_data <- data.frame(a=1:10,
b=factor(letters[1:10]),
resp = sample(c(0,1),10,replace=T,prob=c(.5,.5)) )
fit <- glm(formula = resp ~ a + b,
family = binomial(),
data = dummy_data)
如果您想直接对概率建模,您应该包含一个包含案例总数的附加列。 在这种情况下,您想要建模的概率被解释为给定权重列中案例数的成功率。
dummy_data <- data.frame(a=1:10,
b=factor(letters[1:10]),
resp = runif(10),w=round(runif(10,1,11)))
fit <- glm(formula = resp ~ a + b,
family = binomial(),
data = dummy_data, weights = w)
您仍然会收到警告消息,但您可以忽略它,前提是这些条件:
resp
是 n 次试验中 1 的比例。
对于resp
每个值, w
对应的值是试验次数。
来自警告的讨论:二项式 glm 中的非整数 #successes! (调查包) ,我想我们可以通过另一个族函数?quasibinomial()
来解决它。
dummy_data <- data.frame(a=1:10,
b=factor(letters[1:10]),
resp = runif(10),w=round(runif(10,1,11)))
fit2 <- glm(formula = resp ~ a + b,
family = quasibinomial(),
data = dummy_data, weights = w)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.