R语言 回归分析
在统计学中,Logistic回归是一个模型,它采取响应变量(因变量)和特征(自变量)来确定一个事件的估计概率。当响应变量具有分类值如0或1时,就会使用逻辑模型。例如,一个学生将通过/不通过,一封邮件是否是垃圾邮件,确定图像等。在这篇文章中,我们将讨论回归分析,回归的类型,以及R编程中逻辑回归的实现。
R语言中的回归分析
回归分析是R编程和统计中使用的一组统计过程,用于确定数据集变量之间的关系。一般来说,回归分析用于确定数据集的因变量和自变量之间的关系。回归分析有助于了解当其中一个自变量改变而其他自变量保持不变时,因变量如何变化。这有助于建立一个回归模型,并进一步帮助预测其中一个自变量变化的数值。根据因变量的类型、自变量的数量和回归线的形状,有4种回归分析技术,即线性回归、Logistic回归、多指标Logistic回归和序数Logistic回归。
回归分析的类型
线性回归
线性回归是最广泛使用的回归技术之一,用于模拟两个变量之间的关系。它使用线性关系来模拟回归线。在线性关系方程中,有两个变量,即预测变量和响应变量。
y = ax + b
其中
- y 是响应变量
- x 是预测变量
- a 和 b 是系数
使用这种技术创建的回归线是一条直线。响应变量是由预测变量得出的。预测变量是通过一些统计实验来估计的。线性回归被广泛使用,但这些技术不能够预测概率。
逻辑 回归
另一方面,逻辑回归比线性回归有优势,因为它能够预测范围内的数值。Logistic回归用于预测分类范围内的数值。例如,男性或女性,赢家或输家,等等。
Logistic回归使用以下sigmoidal函数。
其中
- y 代表响应变量
- z 代表自变量或特征的方程。
多项式Logistic回归
多项式Logistic回归是Logistic回归的一种高级技术,它需要2个以上的分类变量,这与Logistic回归中的2个分类变量不同。例如,一个生物学研究者发现了一种新的物种,而物种的类型可以由许多因素决定,如大小、形状、眼睛的颜色、生活的环境因素等。
顺序逻辑回归
顺序逻辑回归也是逻辑回归的一个延伸。它被用来预测不同级别的类别(有序)的值。简单地说,它预测的是等级。例如,一家餐厅对食物的口味质量进行了调查,使用序贯逻辑回归,可以在任何区间的刻度上创建调查响应变量,如1-10,这有助于确定客户对其食品的反应。
在R编程中实现逻辑回归
在R语言中,Logistic回归模型是用glm()函数创建的。
语法: glm(formula, family = binomial)
参数:
formula: 代表一个方程,模型必须在此基础上进行拟合。
family: 代表要使用的函数类型,即二项式用于逻辑回归
要了解glm()函数的更多可选参数,请使用R中的以下命令。
help("glm")
例子
让我们假设一个班级学生的智商水平向量。另一个向量包含了相应学生的成绩,即考试的失败或通过(0或1)。
# Generate random IQ values with mean = 30 and sd =2
IQ <- rnorm(40, 30, 2)
# Sorting IQ level in ascending order
IQ <- sort(IQ)
# Generate vector with pass and fail values of 40 students
result <- c(0, 0, 0, 1, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 1, 1, 0, 0, 1, 0,
0, 0, 1, 0, 0, 1, 1, 0, 1, 1,
1, 1, 1, 0, 1, 1, 1, 1, 0, 1)
# Data Frame
df <- as.data.frame(cbind(IQ, result))
# Print data frame
print(df)
# output to be present as PNG file
png(file="LogisticRegressionGFG.png")
# Plotting IQ on x-axis and result on y-axis
plot(IQ, result, xlab = "IQ Level",
ylab = "Probability of Passing")
# Create a logistic model
g = glm(result~IQ, family=binomial, df)
# Create a curve based on prediction using the regression model
curve(predict(g, data.frame(IQ=x), type="resp"), add=TRUE)
# This Draws a set of points
# Based on fit to the regression model
points(IQ, fitted(g), pch=30)
# Summary of the regression model
summary(g)
# saving the file
dev.off()
输出
IQ result
1 25.46872 0
2 26.72004 0
3 27.16163 0
4 27.55291 1
5 27.72577 0
6 28.00731 0
7 28.18095 0
8 28.28053 0
9 28.29086 0
10 28.34474 1
11 28.35581 1
12 28.40969 0
13 28.72583 0
14 28.81105 0
15 28.87337 1
16 29.00383 1
17 29.01762 0
18 29.03629 0
19 29.18109 1
20 29.39251 0
21 29.40852 0
22 29.78844 0
23 29.80456 1
24 29.81815 0
25 29.86478 0
26 29.91535 1
27 30.04204 1
28 30.09565 0
29 30.28495 1
30 30.39359 1
31 30.78886 1
32 30.79307 1
33 30.98601 1
34 31.14602 0
35 31.48225 1
36 31.74983 1
37 31.94705 1
38 31.94772 1
39 33.63058 0
40 35.35096 1
Call:
glm(formula = result ~ IQ, family = binomial, data = df)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.1451 -0.9742 -0.4950 1.0326 1.7283
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -16.8093 7.3368 -2.291 0.0220 *
IQ 0.5651 0.2482 2.276 0.0228 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 55.352 on 39 degrees of freedom
Residual deviance: 48.157 on 38 degrees of freedom
AIC: 52.157
Number of Fisher Scoring iterations: 4