R 编程中的回归分析
在统计学中,逻辑回归是一种模型,它采用响应变量(因变量)和特征(自变量)来确定事件的估计概率。当响应变量具有分类值(例如 0 或 1)时,使用逻辑模型。例如,学生将通过/失败、邮件是否为垃圾邮件、确定图像等。在本文中,我们将讨论回归分析、回归类型和 R 编程中逻辑回归的实现。
R中的回归分析
回归分析是一组统计过程,用于 R 编程和统计,以确定数据集变量之间的关系。通常,回归分析用于确定数据集的因变量和自变量之间的关系。回归分析有助于了解当自变量之一发生变化而其他自变量保持不变时因变量如何变化。这有助于建立回归模型,并进一步有助于预测与其中一个自变量的变化有关的值。根据因变量的类型、自变量的数量和回归线的形状,回归分析技术有线性回归、Logistic回归、多项Logistic回归和Ordinal Logistic回归4种类型。
回归分析的类型
线性回归
线性回归是最广泛使用的回归技术之一,用于对两个变量之间的关系进行建模。它使用线性关系对回归线进行建模。线性关系方程中使用了两个变量,即预测变量和响应变量。
y = ax + b
where,
- y is the response variable
- x is the predictor variable
- a and b are the coefficients
使用这种技术创建的回归线是一条直线。响应变量源自预测变量。预测变量是使用一些统计实验估计的。线性回归被广泛使用,但这些技术无法预测概率。
逻辑回归
另一方面,逻辑回归比线性回归具有优势,因为它能够预测范围内的值。逻辑回归用于预测分类范围内的值。例如,男性或女性,赢家或输家等。
逻辑回归使用以下 sigmoidal函数:
where,
- y represents response variable
- z represents equation of independent variables or features
多项逻辑回归
多项逻辑回归是一种先进的逻辑回归技术,它采用超过 2 个分类变量,这与采用 2 个分类变量的逻辑回归不同。例如,一位生物学研究人员发现了一种新的物种,物种的类型可以由许多因素决定,如大小、形状、眼睛颜色、其生活的环境因素等。
序数逻辑回归
序数逻辑回归也是逻辑回归的扩展。它用于将值预测为不同级别的类别(有序)。简而言之,它预测排名。例如,由餐厅创建食品口味质量调查,并使用序数逻辑回归,可以在任何区间(例如 1-10)的范围内创建调查响应变量,这有助于确定顾客对其食品的反应。
R编程中逻辑回归的实现
在 R 语言中,逻辑回归模型是使用 glm()函数创建的。
Syntax:glm(formula, family = binomial)
Parameters:
formula: represents an equation on the basis of which model has to be fitted.
family: represents the type of function to be used i.e., binomial for logistic regression
要了解 glm()函数的更多可选参数,请在 R 中使用以下命令:
help("glm")
例子:
让我们假设一个班级学生的智商水平向量。另一个向量包含相应学生的结果,即在考试中失败或通过(0 或 1)。
r
# 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