我试图确定简单概率是否可以解决我的问题,或者使用(学习)逻辑回归等更复杂的方法是否更好。
此问题中的响应变量是二进制响应(0,1)。我有许多都是分类无序的预测变量。我正在尝试确定预测变量的哪些组合产生最高的1。我需要逻辑回归吗?仅针对分类预测变量的每种组合计算样本集中的比例会有什么好处?
我试图确定简单概率是否可以解决我的问题,或者使用(学习)逻辑回归等更复杂的方法是否更好。
此问题中的响应变量是二进制响应(0,1)。我有许多都是分类无序的预测变量。我正在尝试确定预测变量的哪些组合产生最高的1。我需要逻辑回归吗?仅针对分类预测变量的每种组合计算样本集中的比例会有什么好处?
Answers:
逻辑回归直到数值不精确为止,其拟合度与列表百分比完全相同。 因此,如果您的自变量是因子对象factor1
等,并且从属结果(0和1)是x
,则可以使用如下表达式获得效果
aggregate(x, list(factor1, <etc>), FUN=mean)
比较一下
glm(x ~ factor1 * <etc>, family=binomial(link="logit"))
例如,让我们生成一些随机数据:
set.seed(17)
n <- 1000
x <- sample(c(0,1), n, replace=TRUE)
factor1 <- as.factor(floor(2*runif(n)))
factor2 <- as.factor(floor(3*runif(n)))
factor3 <- as.factor(floor(4*runif(n)))
摘要是通过
aggregate.results <- aggregate(x, list(factor1, factor2, factor3), FUN=mean)
aggregate.results
其输出包括
Group.1 Group.2 Group.3 x
1 0 0 0 0.5128205
2 1 0 0 0.4210526
3 0 1 0 0.5454545
4 1 1 0 0.6071429
5 0 2 0 0.4736842
6 1 2 0 0.5000000
...
24 1 2 3 0.5227273
供将来参考,输出第6行中级别(1,2,0)的因子估计为0.5。
逻辑回归以这种方式放弃其系数:
model <- glm(x ~ factor1 * factor2 * factor3, family=binomial(link="logit"))
b <- model$coefficients
要使用它们,我们需要逻辑功能:
logistic <- function(x) 1 / (1 + exp(-x))
要获得例如水平(1,2,0)的因子的估计,请计算
logistic (b["(Intercept)"] + b["factor11"] + b["factor22"] + b["factor11:factor22"])
(注意,必须将所有相互作用都包括在模型中,并且必须应用所有相关系数才能获得正确的估计值。)输出为
(Intercept)
0.5
同意的结果aggregate
。(输出中的“(拦截)”标题是输入的痕迹,对于此计算实际上没有任何意义。)
另一形式的相同信息出现在的输出中table
。例如,(长)输出
table(x, factor1, factor2, factor3)
包括以下面板:
, , factor2 = 2, factor3 = 0
factor1
x 0 1
0 20 21
1 18 21
factor1
= 1 的列对应于(1,2,0)级别的三个因子,并显示等于的值的,与我们从和读出的内容一致。1x
aggregate
glm
最后,可以方便地从以下输出中获得在数据集中占最高比例的因子组合aggregate
:
> aggregate.results[which.max(aggregate.results$x),]
Group.1 Group.2 Group.3 x
4 1 1 0 0.6071429
为了快速浏览每个类别中和/或以多个类别为条件的二进制响应的比例,可以使用图形图。特别是,为了同时可视化以许多类别自变量为条件的比例,我建议使用Mosaic Plots。
以下是从博客文章“ 了解基于区域的图:统计图形和其他博客中的马赛克图”中获取的示例。此示例以乘客的等级为条件,以蓝色显示了泰坦尼克号上幸存者的比例。人们可以同时评估幸存者的比例,同时仍可以了解每个子组中的乘客总数(可以肯定的有用信息,尤其是当某些子组的数量稀少并且我们期望会有更多随机变化时)。
(来源:theusrus.de)
然后,可以使后续镶嵌图以多个类别自变量为条件。来自同一博客文章的下一个示例以简短的视觉摘要显示,所有头等舱和二等舱的儿童乘客都幸存下来,而三等舱的孩子票价则差得很远。它还清楚地表明,尽管每个班级之间女性幸存者的比例从第一到第二到第三班级都明显减少,但成年女性的存活率比男性高得多(尽管机组人员相对较高),再次注意,鉴于门槛有多狭窄,女性船员并不多。
(来源:theusrus.de)
显示了多少信息真是令人惊讶,这是四个方面的比例(阶层,成人/儿童,性别和幸存者比例)!
我同意,如果您对预测感兴趣或总体上对因果关系感兴趣,那么您将希望转向更正式的建模。图形图虽然可以提供关于数据性质的非常直观的线索,并且可以提供其他在简单估计回归模型时(尤其是考虑到不同类别变量之间的交互作用)时常常会漏掉的见解。
Nb
?我总是对数字也说的更好!
您应该查看特征选择算法。一种适合您的情况(二进制分类,分类变量)的方法是“最小冗余最大相关性”(mRMR)方法。您可以在http://penglab.janelia.org/proj/mRMR/上快速在线尝试。
response,predictor1,predictor2,predictor3 <line break here> 1,5,4,3 <line break here> 0,5,3,-1 <line break here> 1,1,2,3
我从事信用评分领域的工作,在这里,作为一个奇怪的案例提出的是规范。
我们使用逻辑回归,将分类变量和连续变量都转换为证据权重(WOE),然后将其用作回归的预测变量。花大量时间对分类变量进行分组,并对连续变量进行离散化(分类/分类)。
证据的权重是一个简单的计算。它是类别的几率的对数,减去总体的几率的对数:
WOE = ln(Good(Class)/ Bad(Class))-ln(Good(ALL)/ Bad(ALL))几乎所有使用Logistic回归构建的信用评分模型的标准转换方法。您可以分段使用相同的数字。
这样做的好处是您将始终知道分配给每个WOE的系数是否有意义。负系数与数据中的模式相反,通常是由多重共线性引起的。系数超过1.0表示过度补偿。大多数系数会出现在零到一之间。