如何在 R 中绘制逻辑回归曲线?
在本文中,我们将学习如何在 R 编程语言中绘制逻辑回归曲线。
逻辑回归基本上是一种监督分类算法。这有助于我们创建区分两类变量的微分曲线。为了在 R 语言中绘制逻辑回归曲线,我们使用以下方法。
使用的数据集: Sample4
方法 1:使用 Base R 方法
为了在基数 R 中绘制逻辑回归曲线,我们首先使用 glm()函数将变量拟合到逻辑回归模型中。 glm()函数用于拟合广义线性模型,通过给出线性预测变量的符号描述来指定。然后我们使用该模型创建一个数据框,其中 y 轴变量更改为其预测值,该预测值是通过使用带有上述创建的模型的 predict()函数得出的。然后我们使用 plot()函数绘制原始点的散点图,并使用lines()函数绘制预测值。
Syntax:
logistic_model <- glm( formula, family, dataframe )
plot( original_dataframe )
lines( predicted_dataframe )
Parameter:
- formula: determines the symbolic description of the model to be fitted.
- family: determines the description of the error distribution and link function to be used in the model.
- dataframe: determines the data frame to be used for fitting purpose
示例:绘制逻辑回归
R
# load dataframe
df <- read.csv("Sample4.csv")
# create logistic regression model
logistic_model <- glm(var1 ~ var2, data=df, family=binomial)
#Data frame with hp in ascending order
Predicted_data <- data.frame(var2=seq(
min(df$var2), max(df$var2),len=500))
# Fill predicted values using regression model
Predicted_data$var1 = predict(
logistic_model, Predicted_data, type="response")
# Plot Predicted data and original data points
plot(var1 ~ var2, data=df)
lines(var1 ~ var2, Predicted_data, lwd=2, col="green")
R
# load library ggplot2
library(ggplot2)
# load data from CSV
df <- read.csv("Sample4.csv")
# Plot Predicted data and original data points
ggplot(df, aes(x=var2, y=var1)) + geom_point() +
stat_smooth(method="glm", color="green", se=FALSE,
method.args = list(family=binomial))
输出:
方法2:使用ggplot2包
要使用 ggplot2 包库绘制逻辑曲线,我们使用 stat_smooth()函数。具有“glm”值的函数的参数方法在 ggplot2 图的顶部绘制逻辑回归曲线。因此,我们首先绘制所需的原始数据点散点图,然后使用 stat_smooth()函数将其与回归曲线重叠。
Syntax:
plot + stat_smooth( method=”glm”, se, method.args )
Parameter:
- se: determines a boolean that tells whether to display confidence interval around smooth.
- method.args: determines the method function for logistic curve.
示例:绘制逻辑回归
R
# load library ggplot2
library(ggplot2)
# load data from CSV
df <- read.csv("Sample4.csv")
# Plot Predicted data and original data points
ggplot(df, aes(x=var2, y=var1)) + geom_point() +
stat_smooth(method="glm", color="green", se=FALSE,
method.args = list(family=binomial))
输出: