R语言之二项及多项分类Logistic回归分析

2019-07-31 15:31:01 浏览数 (1)

1. 逻辑回归概念介绍

我们经常会遇到因变量有多个取值而且无大小顺序的情况,比如职业、婚姻情况等等,这时一般的线性回归分析无法准确地刻画变量之间的因果关系,需要用其逻辑回归分析方法来进行拟合模型。

逻辑回归,可以说是在线性回归的基础上加上一个sigmoid函数,将线性回归产生的值归一化到[0-1]区间内。sigmoid函数如下:

然而,逻辑回归只适用于二分类问题。为了使它能扩展到多分类问题,我们将sigmoid函数,换成softmax函数。

2.R语言中实现函数

a. 二项式逻辑回归

R语言中提供glm()函数,又称广义线性模型

函数参数:

glm(formula,family = gaussian, data, weights, subset, na.action, start = NULL, etastart,mustart, offset, control = list(...), model = TRUE, method ="glm.fit", x = FALSE, y = TRUE, contrasts = NULL, ...)

我们主主要用到的参数:formula,family,data,weight。

Formula:展示我们函数关系(Y~X)

Family:选择适合自己的回归模型

Data:运算的数据包括因素以及结果值(数据矩阵)

Weight:相对应因素的权重值。

实例:

counts <- c(18,17,15,20,10,20,25,13,12)

outcome <- gl(3,1,9)

treatment <- gl(3,3)

print(d.AD <- data.frame(treatment,outcome, counts))

glm.D93 <- glm(counts ~ outcome treatment, family = poisson())

anova(glm.D93)

summary(glm.D93)

b. 多项式逻辑回归模型

R语言提供包mlogit。首先安装R包:install.packages(‘mlogit’)

函数参数:

mlogit(formula,data, subset, weights, na.action, start = NULL, alt.subset = NULL, reflevel =NULL, nests = NULL, un.nest.el = FALSE, unscaled = FALSE, heterosc = FALSE,rpar = NULL, probit = FALSE, R = 40, correlation = FALSE, halton = NULL, random.nb = NULL, panel = FALSE, estimate =TRUE, seed = 10, ...)

predict(object,newdata, returnData = FALSE, ...)

实例:

Library(‘mlogit’)

data("Fishing",package = "mlogit")

Fish<- mlogit.data(Fishing, varying = c(2:9), shape = "wide", choice ="mode")

##a pure "conditional" model

summary(mlogit(mode~ price catch, data = Fish))

欢迎大家学习交流

0 人点赞