Visualisasi Data PubMed

Tentang

Apa sih PubMed itu?

PubMed adalah sumber daya gratis yang mendukung pencarian literatur ilmiah dalam bidang biomedis dan kesehatan. PubMed mencakup lebih dari 30 juta kutipan dan abstrak dari artikel jurnal biomedis. Ini adalah alat penting bagi para peneliti, dokter, dan profesional kesehatan untuk menemukan penelitian terbaru dan informasi medis yang relevan.

Deskripsi

Pada project ini, saya melakukan scraping pada situs web https://pubmed.ncbi.nlm.nih.gov/ untuk mengumpulkan artikel jurnal yang menggunakan metode Support Vector Machine (SVM). SVM adalah salah satu metode pembelajaran mesin yang sangat populer dan digunakan untuk klasifikasi dan regresi. Tujuan utama dari scraping ini adalah untuk mengumpulkan data penelitian terbaru yang menggunakan metode SVM dan memudahkan analisis data dari berbagai studi yang dipublikasikan.

Dengan melakukan scraping data dari PubMed, kita bisa mendapatkan berbagai informasi penting seperti id, judul artikel jurnal, penulis, dan link. Data ini sangat berguna untuk keperluan penelitian, review literatur, dan analisis tren penggunaan SVM dalam berbagai bidang biomedis dan kesehatan.

Packages

library(ggplot2)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tidyr)
## Warning: package 'tidyr' was built under R version 4.1.2
library(tm)
## Loading required package: NLP
## 
## Attaching package: 'NLP'
## The following object is masked from 'package:ggplot2':
## 
##     annotate
library(SnowballC)
## Warning: package 'SnowballC' was built under R version 4.1.2
library(wordcloud)
## Loading required package: RColorBrewer
## Warning: package 'RColorBrewer' was built under R version 4.1.2
library(textclean)
library(topicmodels)
## Warning: package 'topicmodels' was built under R version 4.1.2

Memanggil Data

setwd("~/Desktop")
data <- read.csv("~/Desktop/Project_UAS.PubMed.csv", header = TRUE)
head(data)
##                       X_id
## 1 665fdaabbf2c72d2a006cf91
## 2 665fdaacbf2c72d2a006cf92
## 3 665fdaacbf2c72d2a006cf93
## 4 665fdaacbf2c72d2a006cf94
## 5 665fdaadbf2c72d2a006cf95
## 6 665fdaadbf2c72d2a006cf96
##                                                                       title
## 1 Applications of Support Vector Machine (SVM) Learning in Cancer Genomics.
## 2                                 Sparse SVM for Sufficient Data Reduction.
## 3                                      SVM-CART for Disease Classification.
## 4                                                           SVM clustering.
## 5            SVM-Boosting based on Markov resampling: Theory and algorithm.
## 6 Bayesian-Optimized Hybrid Kernel SVM for Rolling Bearing Fault Diagnosis.
##                                                   author
## 1 Huang S, Cai N, Pacheco PP, Narrandes S, Wang Y, Xu W.
## 2                                        Huang S, et al.
## 3                                                Zhou S.
## 4                                                Zhou S.
## 5                   Reynolds E, Callaghan B, Banerjee M.
## 6                                     Reynolds E, et al.
##                                        link
## 1 https://pubmed.ncbi.nlm.nih.gov/29275361/
## 2 https://pubmed.ncbi.nlm.nih.gov/33891547/
## 3 https://pubmed.ncbi.nlm.nih.gov/33012942/
## 4 https://pubmed.ncbi.nlm.nih.gov/18047717/
## 5 https://pubmed.ncbi.nlm.nih.gov/32836044/
## 6 https://pubmed.ncbi.nlm.nih.gov/37299863/
str(data)
## 'data.frame':    202 obs. of  4 variables:
##  $ X_id  : chr  "665fdaabbf2c72d2a006cf91" "665fdaacbf2c72d2a006cf92" "665fdaacbf2c72d2a006cf93" "665fdaacbf2c72d2a006cf94" ...
##  $ title : chr  "Applications of Support Vector Machine (SVM) Learning in Cancer Genomics." "Sparse SVM for Sufficient Data Reduction." "SVM-CART for Disease Classification." "SVM clustering." ...
##  $ author: chr  "Huang S, Cai N, Pacheco PP, Narrandes S, Wang Y, Xu W." "Huang S, et al." "Zhou S." "Zhou S." ...
##  $ link  : chr  "https://pubmed.ncbi.nlm.nih.gov/29275361/" "https://pubmed.ncbi.nlm.nih.gov/33891547/" "https://pubmed.ncbi.nlm.nih.gov/33012942/" "https://pubmed.ncbi.nlm.nih.gov/18047717/" ...
dim(data)
## [1] 202   4

10 Penulis Terbanyak

data %>%
  count(author) %>%
  top_n(10, n) %>%
  ggplot(aes(x = reorder(author, n), y = n)) +
  geom_bar(stat = "identity", fill = "red", alpha = 0.8) +
  theme_minimal() +
  labs(title = "Top 10 Penulis Terbanyak",
       x = "Penulis",
       y = "Jumlah Artikel") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Interpretasi:
Diagram ini menunjukkan bahwa sebagian besar penulis teratas telah berkontribusi masing-masing 2 artikel, kecuali Bui DD. et al., yang telah berkontribusi 3 artikel, menjadikannya penulis paling produktif di antara 10 penulis teratas yang tercantum. Adanya kategori untuk artikel tanpa penulis menunjukkan bahwa beberapa kontribusi tidak diatributkan kepada individu tertentu.

Word Cloud Judul Artikel Jurnal

# Menggabungkan semua judul artikel menjadi satu teks
all_titles <- paste(data$title, collapse = " ")

# Membuat corpus dari teks
corpus <- Corpus(VectorSource(all_titles))

# Membersihkan teks
corpus <- tm_map(corpus, content_transformer(tolower))
## Warning in tm_map.SimpleCorpus(corpus, content_transformer(tolower)):
## transformation drops documents
corpus <- tm_map(corpus, removePunctuation)
## Warning in tm_map.SimpleCorpus(corpus, removePunctuation): transformation drops
## documents
corpus <- tm_map(corpus, removeWords, stopwords("english"))
## Warning in tm_map.SimpleCorpus(corpus, removeWords, stopwords("english")):
## transformation drops documents
corpus <- tm_map(corpus, stripWhitespace)
## Warning in tm_map.SimpleCorpus(corpus, stripWhitespace): transformation drops
## documents
# Membuat word cloud
wordcloud(corpus, max.words = 100, random.order = FALSE, colors = brewer.pal(8, "Dark2"))

Interpretasi:
Gambar tersebut adalah sebuah word cloud yang menggambarkan kata-kata yang paling sering muncul dalam sebuah kumpulan teks atau artikel yang terkait dengan “svm” (Support Vector Machine). Berikut adalah interpretasi dari word cloud tersebut:

  1. Kata Kunci Utama:
  • svm: Kata ini adalah yang paling dominan dan paling sering muncul dalam teks, ditunjukkan dengan ukuran terbesar.
  • classification, support, vector, machine, using, based: Kata-kata ini juga sangat sering muncul, ditunjukkan dengan ukuran yang cukup besar.
  1. Kata Kunci Penting Lainnya:
  • Kata-kata seperti learning, method, data, prediction, analysis, model, feature, selection, algorithm, detection, dan lain-lain juga muncul dengan frekuensi yang cukup tinggi, ditunjukkan dengan ukuran yang menengah.
  1. Topik dan Konteks:
  • Word cloud ini menunjukkan bahwa teks atau artikel terkait sangat berfokus pada aplikasi SVM dalam classification (klasifikasi).
  • Banyak kata yang berhubungan dengan machine learning (pembelajaran mesin), prediction (prediksi), dan data analysis (analisis data).
  • Istilah seperti feature selection (seleksi fitur), method (metode), algorithm (algoritma), dan model (model) menunjukkan konteks teknis dan metodologis dari penggunaan SVM.
  1. Aplikasi Spesifik:
  • Beberapa kata menunjukkan aplikasi spesifik seperti disease (penyakit), diagnosis (diagnosis), recognition (pengenalan), brain (otak), protein (protein), yang menunjukkan penggunaan SVM dalam berbagai bidang termasuk medis, biologi, dan pengenalan pola.

Kesimpulan:
Word cloud ini mengilustrasikan bahwa dalam teks atau artikel yang dianalisis, SVM (Support Vector Machine) sangat sering dikaitkan dengan topik klasifikasi, pembelajaran mesin, dan analisis data. Istilah-istilah terkait menunjukkan aplikasi SVM yang luas dalam berbagai bidang, serta metodologi dan teknik yang digunakan dalam penerapan SVM.

Cluster Judul Artikel Jurnal

# Membuat corpus dari judul-judul
corpus1 <- Corpus(VectorSource(data$title))

# Membersihkan teks: mengubah huruf menjadi kecil dan menghilangkan angka dan tanda baca
corpus1 <- tm_map(corpus1, content_transformer(tolower))
## Warning in tm_map.SimpleCorpus(corpus1, content_transformer(tolower)):
## transformation drops documents
corpus1 <- tm_map(corpus1, removeNumbers)
## Warning in tm_map.SimpleCorpus(corpus1, removeNumbers): transformation drops
## documents
corpus1 <- tm_map(corpus1, removePunctuation)
## Warning in tm_map.SimpleCorpus(corpus1, removePunctuation): transformation
## drops documents
# Mengubah corpus menjadi matriks dokumen-istilah
dtm <- DocumentTermMatrix(corpus1)

# Mengubah matriks dokumen-istilah menjadi matriks tf-idf
tfidf <- weightTfIdf(dtm)

# Menentukan jumlah cluster
k <- 5

# Melakukan k-means clustering
set.seed(123)
kmeans_result <- kmeans(tfidf, centers = k)

# Menggabungkan hasil clustering ke data
data$cluster <- as.factor(kmeans_result$cluster)

# Memberikan nama untuk setiap cluster
cluster_names <- c("Medical Image Analysis", "Disease Diagnosis and Classification", "Machine Learning in Healthcare", "Bioinformatics and Genomics", "Drug Discovery and Molecular Modeling")

# Mengubah label cluster menjadi nama cluster
data$cluster_name <- cluster_names[data$cluster]

# Visualisasi hasil clustering dengan nama cluster
ggplot(data, aes(x = cluster_name)) +
  geom_bar(fill = "red", alpha = 0.8) +
  labs(title = "Jumlah Judul dalam Setiap Cluster",
       x = "Cluster",
       y = "Jumlah Judul") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))  # Rotasi label sumbu x agar lebih mudah dibaca

Interpretasi:
Diagram batang berjudul “Jumlah Judul dalam Setiap Cluster” menunjukkan jumlah judul artikel yang tergolong dalam masing-masing cluster. Berikut adalah interpretasinya:

  1. Cluster dan Jumlah Judul:
  • Bioinformatics and Genomics: Cluster ini memiliki sangat sedikit judul, hampir tidak terlihat pada diagram.
  • Disease Diagnosis and Classification: Cluster ini memiliki jumlah judul terbanyak, hampir mencapai 200 judul. Ini menunjukkan bahwa banyak artikel yang berfokus pada diagnosis dan klasifikasi penyakit.
  • Drug Discovery and Molecular Modeling: Cluster ini juga memiliki sangat sedikit judul, hampir tidak terlihat pada diagram.
  • Machine Learning in Healthcare: Cluster ini memiliki beberapa judul, jumlahnya sekitar 20 judul, menunjukkan minat yang signifikan namun lebih rendah dibandingkan dengan cluster diagnosis dan klasifikasi penyakit.
  • Medical Image Analysis: Cluster ini juga memiliki sangat sedikit judul, hampir tidak terlihat pada diagram.
  1. Kesimpulan:
  • Dominasi: Cluster “Disease Diagnosis and Classification” sangat mendominasi dengan jumlah judul yang jauh lebih banyak dibandingkan cluster lainnya. Ini menunjukkan fokus yang kuat dalam literatur atau penelitian terkait diagnosis dan klasifikasi penyakit.
  • Ketimpangan: Ada ketimpangan yang sangat jelas antara jumlah judul dalam cluster “Disease Diagnosis and Classification” dan cluster lainnya, yang menunjukkan bahwa topik ini lebih banyak diteliti atau dipublikasikan dibandingkan topik lainnya dalam bidang yang sama.
  • Minat Penelitian: Cluster seperti “Machine Learning in Healthcare” menunjukkan minat yang lebih rendah, namun masih signifikan, sedangkan cluster “Bioinformatics and Genomics”, “Drug Discovery and Molecular Modeling”, dan “Medical Image Analysis” memiliki jumlah judul yang sangat rendah.

Secara keseluruhan, diagram ini menunjukkan bahwa dalam kumpulan artikel yang dianalisis, topik “Disease Diagnosis and Classification” sangat populer dan menjadi fokus utama penelitian atau publikasi, sedangkan topik lainnya mendapat perhatian yang jauh lebih sedikit.