Multinomial Logistic Regression in R
In this article, we will learn about Multinomial Logistic Regression which can be used when we have more than two categories in the target column. Let’s first start with a little bit brief explanation about the multinomial logistic regression and after this we will move on to the code implementation part by using different packages which are available in R.
What is Multinomial Logistic Regression?
Multinomial logistic regression is used when we have a categorical dependent variable with more than two categories. In R, we can perform multinomial logistic regression using the multinom() function from the nnet package.
- Multinomial logistic regression is a type of regression analysis used to predict the nominal or categorical dependent variable with two or more levels.
- the multinom() function from the nnet package can be used to perform multinomial logistic regression.
VGAM Package in R for Multinomial Logistic Regression
The VGAM (Vector Generalized Linear and Additive Models) package in R Programming Language provides a suite of functions for fitting a variety of regression models. The vglm() function is one of the most commonly used functions in the package and can be used for multinomial logistic regression.
R
library (VGAM) # Load the iris dataset data (iris) # Convert the species variable to a factor iris$Species <- as.factor (iris$Species) # Fit a multinomial logistic regression model fit <- vglm (Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, data = iris, family = multinomial) # Print the model summary summary (fit) |
Output:
Estimate Std. Error z value Pr(>|z|) (Intercept):1 35.490 22666.953 NA NA (Intercept):2 42.638 25.708 1.659 0.0972 . Sepal.Length:1 9.495 6729.217 NA NA Sepal.Length:2 2.465 2.394 1.030 0.3032 Sepal.Width:1 12.300 3143.611 NA NA Sepal.Width:2 6.681 4.480 1.491 0.1359 Petal.Length:1 -22.975 4799.227 -0.005 0.9962 Petal.Length:2 -9.429 4.737 NA NA Petal.Width:1 -33.843 7583.502 NA NA Petal.Width:2 -18.286 9.743 NA NA
nnet Packgae in R for Multinomial Logistic Regression
We can also define a neural network using nnet package in R and in the neural net we can have more than two output categories by including that many numbers of nodes in the output layer of the neural network.
R
library (nnet) data (iris) # Fit multinomial logistic regression model model <- multinom (Species ~ Petal.Length + Petal.Width + Sepal.Length + Sepal.Width, data = iris) # Predict flower species for new data new_data <- data.frame (Petal.Length = 1.5, Petal.Width = 0.3, Sepal.Length = 4.5, Sepal.Width = 3.1) predict (model, newdata = new_data, type = "class" ) |
Output:
# weights: 18 (10 variable) initial value 164.791843 iter 10 value 16.177348 iter 20 value 7.111438 iter 30 value 6.182999 iter 40 value 5.984028 iter 50 value 5.961278 iter 60 value 5.954900 iter 70 value 5.951851 iter 80 value 5.950343 iter 90 value 5.949904 iter 100 value 5.949867 final value 5.949867 stopped after 100 iterations setosa Levels: 'setosa''versicolor''virginica'
The iris dataset contains measurements of petal and sepal length and width for three different species of flowers (setosa, versicolor, and virginica). We fit the multinomial logistic regression model to predict flower species based on the four measurements. We then use the predict function to predict the species of new flowers with the given measurements.