如何在R语言中使用Logistic回归模型

Python019

如何在R语言中使用Logistic回归模型,第1张

在日常学习或工作中经常会使用线性回归模型对某一事物进行预测,例如预测房价、身高、GDP、学生成绩等,发现这些被预测的变量都属于连续型变量。然而有些情况下,被预测变量可能是二元变量,即成功或失败、流失或不流失、涨或跌等,对于这类问题,线性回归将束手无策。这个时候就需要另一种回归方法进行预测,即Logistic回归。

在实际应用中,Logistic模型主要有三大用途:

1)寻找危险因素,找到某些影响因变量的"坏因素",一般可以通过优势比发现危险因素;

2)用于预测,可以预测某种情况发生的概率或可能性大小;

3)用于判别,判断某个新样本所属的类别。

Logistic模型实际上是一种回归模型,但这种模型又与普通的线性回归模型又有一定的区别:

1)Logistic回归模型的因变量为二分类变量;

2)该模型的因变量和自变量之间不存在线性关系;

3)一般线性回归模型中需要假设独立同分布、方差齐性等,而Logistic回归模型不需要;

4)Logistic回归没有关于自变量分布的假设条件,可以是连续变量、离散变量和虚拟变量;

5)由于因变量和自变量之间不存在线性关系,所以参数(偏回归系数)使用最大似然估计法计算。

logistic回归模型概述

广义线性回归是探索“响应变量的期望”与“自变量”的关系,以实现对非线性关系的某种拟合。这里面涉及到一个“连接函数”和一个“误差函数”,“响应变量的期望”经过连接函数作用后,与“自变量”存在线性关系。选取不同的“连接函数”与“误差函数”可以构造不同的广义回归模型。当误差函数取“二项分布”而连接函数取“logit函数”时,就是常见的“logistic回归模型”,在0-1响应的问题中得到了大量的应用。

Logistic回归主要通过构造一个重要的指标:发生比来判定因变量的类别。在这里我们引入概率的概念,把事件发生定义为Y=1,事件未发生定义为Y=0,那么事件发生的概率为p,事件未发生的概率为1-p,把p看成x的线性函数;

回归中,最常用的估计是最小二乘估计,因为使得p在[0,1]之间变换,最小二乘估计不太合适,有木有一种估计法能让p在趋近与0和1的时候变换缓慢一些(不敏感),这种变换是我们想要的,于是引入Logit变换,对p/(1-p)也就是发生与不发生的比值取对数,也称对数差异比。经过变换后,p对x就不是线性关系了。

R语言-统计学 描述性统计

描述定量数据的数值方法:中心趋势度量 变异的度量 相对位置的度量。

1.中心趋势度量 : 算数平均 中位数 众数

1.1 在R中计算平均数的函数 mean( )常规的mean() 函数用法mean(x, trim = 0, na.rm = FALSE, ...) 参数说明: x 对象名称trim 过滤掉异常值 ,按照距离平均值的远近距离排除,如对象中含有10个数据,排除最高和最低值,trim=0.2na.rm 默认为F 表示是否计入空值实例1: 做一个稍微复杂点的操作,用r做数据透视表并把结果转换为matrix ,对行列求和。(仅娱乐,无实用价值)

demo <- mtcars[1:6,] # 调用R自带函数集,并去前6行

toushi <- aggregate(mtcars[,5:6] ,by = list(cyl = mtcars$cyl),sum) # 数据透视表求和

toushi <- as.matrix(toushi) # 将结果的数据框转化成矩阵

#(toushi <- apply(toushi,c(1,2),sum))

(rowSums(toushi)) # 行求和

(colSums(toushi)) # 列求和

toushi <- rbind(toushi,rowSums(toushi)) #将行求和结果并入最后一行

toushi <- cbind(toushi,colSums(toushi)) #将列求和结果并入最后一列

1.2 中位数和众数

对于偏度极大的数据集,中位数能更好的描述数据分布的中心。

很少用众数作为数据数据趋势的度量,只有当对y出现的相对频率感兴趣时,才会考虑到众数。

R实现中位数 :

median(x, na.rm = FALSE)

R中没有直接插找众数的命令

which.max(table(x))

2.变异的度量 : 极差 方差 标准差

2.1 .极差 = max()- min()

2.2 方差和标准差

对一个有n个测量值的有限总体来说,方差计算公式的分母为n。关于样本方差和总体方差分母的差异原因,可自行百度搜索。

R语言计算方差的函数: var(x,)

w<-c(75.0,64.0,47.4,66.9,62.2,62.2,58.7,63,5,66.6,64.0,57.0,69.0,56.9,50.0,72.0)

var(w)

# 附加指数点:标准差的两个有用法则:经验法则 和 切比雪夫法则,共同说明一个问题,对于任意大于1的正数k,至少有(1-1/k^2)的测试值落在平均值的k个标准值范围内。

3.变异的度量 : 百分位数 Z得分

3.1 .最常见的四分位数(一般从大到小)

quantile(x, probs = seq(0, 1, 0.25), na.rm = FALSE,names = TRUE, type = 7, ...)

mutate:变异 突变 改变 数据修改

紧接着创建新的列gain和speed

新创建的列同时也可以使用(但是保留的方法仍然是赋值给某个名称):

由于系统显示限制,最后一列没有展示出来,运行view()函数即可:

如果只想要保留新的变量,那就使用transmute()函数:

此时参与计算的arr_delay、dep_delay、air_time、hours都消失,只有新转换的gain、hours 、gain_per_hour三列。

mutare()函数可以和前面提到的几个函数结合起来使用。其中进行运算的时候,肯定会涉及到R语言的计算语言,以下列出几个常用的:

举例: