This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
summary(cars)
## speed dist
## Min. : 4.0 Min. : 2.00
## 1st Qu.:12.0 1st Qu.: 26.00
## Median :15.0 Median : 36.00
## Mean :15.4 Mean : 42.98
## 3rd Qu.:19.0 3rd Qu.: 56.00
## Max. :25.0 Max. :120.00
if (!require(nnet)) install.packages(“nnet”) if (!require(MASS)) install.packages(“MASS”) if (!require(caret)) install.packages(“caret”) if (!require(ggplot2)) install.packages(“ggplot2”) if (!require(dplyr)) install.packages(“dplyr”) if (!require(knitr)) install.packages(“knitr”) if (!require(corrplot)) install.packages(“corrplot”) if (!require(MVN)) install.packages(“MVN”)
library(nnet) library(MASS) library(caret) library(ggplot2) library(dplyr) library(knitr) library(corrplot) library(MVN)
data(iris) str(iris) head(iris) dim(iris)
summary(iris)
aggregate(. ~ Species, data = iris, FUN = mean)
aggregate(. ~ Species, data = iris, FUN = sd)
par(mfrow = c(2,2)) for(i in 1:4){ boxplot(iris[,i] ~ iris$Species, main = names(iris)[i], xlab = “Species”, ylab = names(iris)[i], col = c(“lightblue”, “lightgreen”, “lightyellow”)) } par(mfrow = c(1,1))
pairs(iris[,1:4], col = as.numeric(iris$Species), main = “Scatter Plot Matrix - Iris Dataset”)
mvn_result <- mvn(data = iris[,1:4], mvn_test = “mardia”) print(mvn_result\(multivariateNormality) print(mvn_result\)univariateNormality)
if (!require(biotools)) install.packages(“biotools”) library(biotools) boxM_result <- boxM(iris[,1:4], iris$Species) print(boxM_result)
cor_matrix <- cor(iris[,1:4]) print(round(cor_matrix, 3)) corrplot(cor_matrix, method = “color”, addCoef.col = “black”, title = “Matriks Korelasi Variabel Iris”, mar = c(0,0,1,0))
set.seed(123) index <- createDataPartition(iris$Species, p = 0.8, list = FALSE) train_data <- iris[index, ] test_data <- iris[-index, ]
cat(“Jumlah data training:”, nrow(train_data), “”) cat(“Jumlah data testing:”, nrow(test_data), “”)
train_data\(Species <- relevel(train_data\)Species, ref = “setosa”)
model_multinom <- multinom(Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, data = train_data, trace = FALSE)
summary(model_multinom)
z_scores <- summary(model_multinom)\(coefficients / summary(model_multinom)\)standard.errors p_values <- 2 * (1 - pnorm(abs(z_scores))) print(“Z-scores:”) print(round(z_scores, 4)) print(“P-values:”) print(round(p_values, 4))
odds_ratio <- exp(coef(model_multinom)) print(“Odds Ratio:”) print(round(odds_ratio, 4))
pred_multinom <- predict(model_multinom, newdata = test_data)
cm_multinom <- confusionMatrix(pred_multinom, test_data$Species) print(cm_multinom)
acc_multinom <- cm_multinom$overall[“Accuracy”] cat(“Akurasi Multinomial:”, round(acc_multinom * 100, 2), “%”)
model_lda <- lda(Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, data = train_data)
print(model_lda)
cat(“Varians LD:”) print(round(model_lda\(svd^2 / sum(model_lda\)svd^2), 4))
pred_lda <- predict(model_lda, newdata = test_data)
cm_lda <- confusionMatrix(pred_lda\(class, test_data\)Species) print(cm_lda)
acc_lda <- cm_lda$overall[“Accuracy”] cat(“Akurasi LDA:”, round(acc_lda * 100, 2), “%”)
lda_scores <- as.data.frame(predict(model_lda, train_data)\(x) lda_scores\)Species <- train_data$Species
ggplot(lda_scores, aes(x = LD1, y = LD2, color = Species, shape = Species)) + geom_point(size = 3, alpha = 0.8) + stat_ellipse(level = 0.95) + labs(title = “Plot Linear Discriminant Analysis (LDA)”, x = “LD1”, y = “LD2”) + theme_bw() + scale_color_manual(values = c(“red”, “blue”, “green3”))
comparison <- data.frame( Metode = c(“Multinomial Logistic Regression”, “Linear Discriminant Analysis”), Akurasi = c(round(acc_multinom * 100, 2), round(acc_lda * 100, 2)), Kappa = c(round(cm_multinom\(overall["Kappa"], 4), round(cm_lda\)overall[“Kappa”], 4)) ) print(comparison)
cat(“— Performa per Kelas: Multinomial —”) print(cm_multinom$byClass[, c(“Sensitivity”, “Specificity”, “F1”)])
cat(“— Performa per Kelas: LDA —”) print(cm_lda$byClass[, c(“Sensitivity”, “Specificity”, “F1”)])
set.seed(123) ctrl <- trainControl(method = “cv”, number = 10)
cv_multinom <- train(Species ~ ., data = iris, method = “multinom”, trControl = ctrl, trace = FALSE) cat(“CV Akurasi Multinomial:”, round(max(cv_multinom\(results\)Accuracy)*100,2), “%”)
cv_lda <- train(Species ~ ., data = iris, method = “lda”, trControl = ctrl) cat(“CV Akurasi LDA:”, round(max(cv_lda\(results\)Accuracy)*100,2), “%”)
You can also embed plots, for example:
Note that the echo = FALSE parameter was added to the
code chunk to prevent printing of the R code that generated the
plot.