Tag Archives: rstats

My trials on Google Scholar R package

Background

This is the good thing about open database. Although Google Scholar (GS) is not a completely open database, but people at Google let us to do the following things using R and Scholar. The following post was my first trial to the scholar package to harvest GS data.

Jump Hasbi, jump… (Credit: flickr/d_erwin_irawan, CC-BY)

 

Installing packages

In this trial, I used the following packages:

  1. scholar
  2. tidyverse
# Ommit the '#' sign if you haven't installed the packages
#install.packages("scholar")
library(scholar)
#install.packages("tidyverse")
library(tidyverse)
#install.packages("gridExtra")

Getting your GS ID

Your GS ID will be written in the url of your profile, for instance:

  1. Erwin: url https://scholar.google.co.id/citations?user=Myvc78MAAAAJ&hl=en&authuser=1; GS ID “Myvc78MAAAAJ&hl””
  2. Prof. Edy Soewono: url https://scholar.google.co.id/citations?user=6U_YtvMAAAAJ&hl=en&authuser=1; GS ID “6U_YtvMAAAAJ&hl”
  3. Prof. Khairurrijal: url https://scholar.google.co.id/citations?user=4_asJ0MAAAAJ&hl=en&authuser=1; GS ID “4_asJ0MAAAAJ&hl”
  4. Dr. Jon Tennant: url https://scholar.google.co.id/citations?user=P7FvGMEAAAAJ&hl=en; GS ID “P7FvGMEAAAAJ&hl”

Storing GS ID

Here we saved the GS ID of each author.

E <- "Myvc78MAAAAJ&hl"  #hydrogeology
ES <- "6U_YtvMAAAAJ&hl" #math
Kh <- "4_asJ0MAAAAJ&hl" #physics
JT <- "P7FvGMEAAAAJ&hl" #paleontology

Getting GS profiles information

We can show the profile information using the following function.

E.profile <- get_profile(E)
ES.profile <- get_profile(ES)
Kh.profile <- get_profile(Kh)
JT.profile <- get_profile(JT)

E.profile
ES.profile
Kh.profile
JT.profile

How many papers have they published?

Function get_num_articles() gathers total number of articles.

E.num <- get_num_articles(E)
ES.num <- get_num_articles(ES)
Kh.num <- get_num_articles(Kh)
JT.num <- get_num_articles(JT)

num <- c(E.num, ES.num, Kh.num, JT.num)
barplot(num, names.arg=c("E", "ES", "Kh", "JT")) 

Comparing career

This is an interesting function in scholar. This function calculates the number of years since the first publication (assuming this as the starting year of the career).

IDs <- c(ES, Kh, JT)
compare_scholar_careers(IDs, career = TRUE)

Getting citation history

This is a bit strange, E.cite.year failed to run.

ES.cite.year <- get_citation_history(ES)  # success
Kh.cite.year <- get_citation_history(Kh)  # success
JT.cite.year <- get_citation_history(JT)  # success
# E.cite.year <- get_citation_history(E)   # hmm, error, strange

Plotting citation history

This functions use ggplot2, but you can always use base function to plot.

ES.hist <- ggplot(ES.cite.year, aes(year,cites)) + 
  geom_bar(stat='identity',fill=colors()[128]) +
  scale_x_continuous(
    breaks = c(2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017))

Kh.hist <- ggplot(Kh.cite.year, 
       aes(year,cites)) + 
  geom_bar(stat='identity',fill=colors()[120]) +
  scale_x_continuous(
    breaks = c(2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017))

JT.hist <- ggplot(JT.cite.year, 
                aes(year,cites)) + 
  geom_bar(stat='identity',fill=colors()[118]) +
  scale_x_continuous(
    breaks = c(2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017))

ES.hist
Kh.hist
JT.hist

## My work around
E.cite.year <- get_publications(E)
E.cite.year <- as.data.frame(lapply(E.cite.year,
                                 function(x) if (is.factor(x)) as.character(x) else x))
w <-grep("Ultrafast", E.cite.year$title) 
E.cite.year$title[w]
E.cite.year$pubid[w] 
E.cite.year <- get_article_cite_history(E, E.cite.year$pubid[w])

E.hist <- ggplot(E.cite.year, aes(year, cites)) +
  geom_bar(stat='identity',fill=colors()[110]) +
  scale_x_continuous(
    breaks = c(2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017))+
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Getting number of unique journals

get_num_distinct_journals(E)
get_num_distinct_journals(ES)
get_num_distinct_journals(Kh)
get_num_distinct_journals(JT)

Getting number of top journals

get_num_top_journals(E)
get_num_top_journals(ES)
get_num_top_journals(Kh)
get_num_top_journals(JT)

When did they become scientists?

get_oldest_article(E)
get_oldest_article(ES)
get_oldest_article(Kh)
get_oldest_article(JT)

Getting publications and write to a csv file

E.pubs <- get_publications(E)
write.csv(pubs, file = "citations.csv")

Predict their h-index

E.x <- predict_h_index(E)
ES.x <- predict_h_index(ES)
Kh.x <- predict_h_index(Kh)
JT.x <- predict_h_index(JT)

Nantikan kaos “Impact Factor is a myth” 🙂

Dari @openscience_ID dan @itb_press

New (RMarkdown) post from OS X 10.10 (Yosemite)

This is my first post on OSX 10.10 (nick name: Yosemite). Yep I always late…

As I did mostly, I blog using RMarkdown. It allows you to manipulate your source file in to a structured text and convert it to almost any formats: odt, docx, pdf, html, etc.

Basically you can make any docs containing:

  • outline
  • bullets and numbering
  • basics formatting:
    • make it bold = bold,
    • or italic = italic,
    • even make an superscript symbol = superscript and off course subscript subscript ,
    • strikethrough
    • write equations: $ Q = CA(dh/dl) $
    • insert a link: DasaptaErwinBlog
    • insert a figure: itb_logo
    • insert a quote or lines of code: quote from Einstein
    • insert a table:
Name Age (ya)
Rex 65,000,000
Mankind 100.000
me 39
wife 35
Radit 8
Bila 4
- make a chart out of it
Name <- c('Rex', 'Mankind', 'Me', 'Wife', 'Radit', 'Bila')
Age <- c(65, 0.1, 39, 35, 8, 4)
df <- data.frame(Name, Age)
plot(df, main="Age comparison", xlab="Species", ylab="Age (mya)")

Rplot01
  • and a whole lot more

Another good thing is you can built the entire doc in plain text (ASCII). So it’s:

  • light weight: in kb
  • connected to any word-processor:
    • Libreoffice
    • MS office
  • or text-editor:
    • notepad
    • wordpad
  • virus-free

//

1st Circular: Indonesia R Meet Up

  

Karena ternyata sudah banyak yang “terungkap” sebagai Pengguna R (pada tahap beginners hingga advanced), sudah saatnya merancang acara R meet up. Contohnya seperti ini: http://r-users-group.meetup.com/.

Komunitas Indonesia R User akan menyelenggarakan Indonesia R Meet Up yang pertama, dengan tema R 4 All.

TORnya sebagai berikut:

  • Siapa saja yang boleh hadir: semua yang berminat dan join R user group.
  • Siapa saja yang boleh mengirimkan abstrak: pengguna R (tidak ada batasan kompetensi), dan harus join R user group.
  • Apa saja yang boleh dipresentasikan: semua topik asal menggunakan R.

Topik sementara ini hanya dibagi dua: 

  1. Natural sciences (termasuk kedokteran, kesehatan)
  2. Social sciences (termasuk ekonomi)

  • Bagaimana format abstrak: 200 kata, ada max 5 kata kunci, menggandung latar belakang, metode, hasil, kesimpulan, rekomendasi. Kode R disampaikan sebagai lampiran.
  • Dikirim ke mana: di post di Wall R User Group.

Masukan-masukan terhadap penyelenggaraan acara agar dapat ditulis di kolom komentar.

Terimakasih.

3rd Workshop: Introduction to R

Cover

Alhamdulillah

Acara 3rd Intro to R telah selesai dilaksanakan, sekitar 50 peserta telah hadir. Ada Pak Adi Pancoro Biologi 🙂

Mohon maaf atas segala kekurangan. Lain kali akan lebih rapih lagi, karena sambungan internet kurang lancar untuk instalasi package dll. Namun minimum para peserta telah memahami cara instalasi dan beberapa dasar operasi R.

Slide akan segera tersedia di SlideShare, kode lengkap akan diunggah ke Github.

Pada kesempatan berikutnya akan diadakan workshop R tematik: basic stats, multivariable analysis, exploratory data analysis, plotting, dll.

Terimakasih atas minat peserta yang tinggi. Terimakasih pula untuk Perpustakaan ITB, Bapak Mahmudin, dan para pustakawan Mas Yoka Adam cs. Semoga tidak kapok jadi host.

Unduh slide format pdf: 20150526-IntroR-Text

Slide format ioslide dapat dilihat di: Rpubs

Unduh data dan code di: GoogleDrive

Data is the new soil

Data is not the new oil, but it’s the new soil (David McCandless, TedTalks)
Anda sudah pernah lihat video Mas David McCandless di Youtube? Kalau belum lihat ya. Mampir juga nonton video gurunya, Hans Rosling.
Data juga dapat mengungkap hal-hal yang tersembunyi di balik suatu fenomena yang kita hadapi. Tapi data dalam bentuk tabel kurang cepat memberi gambaran apa yang terjadi, karena itulah kita perlu visualisasi.
Untuk para geologiwan, peta geologi adalah hanya salah satu saja bentuk visualisasi. Peta ini mentransformasi tabel jurus dan kemiringan batuan, jenis batuan, dll menjadi zonasi batuan, penampang lapisan batuan, garis sesar, lipatan dll, ke dalam selembar kertas.
Berikut ini adalah contoh lain dari visualisasi yang bisa kita lakukan untuk mengungkap sesuatu yang sebelumnya tidak terlihat. Saya menggunakan “R” dan “mtcars” data set. Data set ini adalah salah satu saja dari data set yang sudah menyatu di dalam distribusi R. Data ini diekstraksi dari Majalah “Motor Trend” tahun 1974 yang terbit di AS. Isinya adalah 10 variabel spesifikasi dari 32 merek mobil buatan tahun 1973 – 1974 Motor Trend US magazine. Spesifikasi variabel atau parameter spesifikasi yang ada dalam data ini adalah:
mpg Miles/(US) gallon              di Indonesia dibaca sebagai km per liter BBM
cyl Number of cylinders         jumlah silinder
disp Displacement (cu.in.)        di Indonesia mengenalnya sebagai cc
hp Gross horsepower             tenaga kuda
drat Rear axle ratio                   di Indonesia dikenal sebagai rasio gear
wt Weight (lb/1000)              berat kendaraan
qsec 1/4 mile time                      waktu yang diperlukan dari diam hingga 0.25 mil
vs V/S                                     ada yang tahu ini apa?
am Transmission                      transmisis matik atau manual
gear Number of forward gears  jumlah gigi maju
carb Number of carburetors      jumlah karburator
Data ini pertama kali dianalisis oleh Henderson and Velleman (1981) dalam papernya Building multiple regression models interactively. Biometrics, 37, 391–411.
Ada yang masih menggunakan Ms Excel? Anda mungkin akan berpikir ulang.
Saya akan menggunakan R dalam membuat beberapa visualisasi dalam bentuk grafik sebagai berikut.
Dengan perintah “pairs(mtcars, main = “mtcars data”)” anda sudah bisa mendapatkan grafik matriks korelasi seperti di bawah ini. Coba anda lihat, banyak yang bilang keiritan mobil (mpg) hanya ditentukan oleh cc. Karena itu kalau di Indonesia harga mobil bekas ber-cc besar akan “jatuh bebas” dibandingkan yang ber-cc kecil.
Coba kita lihat grafik 1 di bawah ini sebagian saja. Tarik garis diagonal yang ada tulisan “mpg”, “cyl” dst, dan pilih setengah saja, apakah anda ingin lihat setelah segitiga yang atas atau yang bawah. They’re all the same. Let’s just choose the lower part.
Anda lihat pola titik-titik data yang membentuk garis lurus atau mirip garis lurus (berarah diagonal), dan ada pula yang acak. Pola yang pertama menunjukkan adanya korelasi antara kedua parameter dan pola yang kedua memperlihatkan korelasi yang sangat kecil atau bahkan tidak berkorelasi sama sekali.
Pola yang membentuk keteraturan diagonal dengan mpg adalah:
  • mpg ~ disp (cc) -> keiritan dengan cc
  • mpg ~ hp -> keiritan dengan tenaga kuda
Korelasi yang relatif lebih lemah terlihat antara:
  • mpg ~ drat -> keiritan dengan rasio gear
  • mpg ~ wt -> keiritan dengan berat kendaraan
Korelasi yang lebih lemah (tapi ada) adalah antara:
  • mpg ~ qsec -> keiritan denga waktu yang diperlukan dari diam hingga menempuh 0.25 mil
Dari sini terlihat bahwa keiritan mobil anda bukan hanya ditentukan oleh besar kecilnya cc, tapi juga dengan gaya mengemudi anda (diwakili variabel qsec).
image
Gambar 1 Correlation matrix BW
Kalau anda senang warna, maka dengan satu baris perintah “corrgram(mtcars)” anda bisa membuat grafik sejenis di bawah ini.
mtcarscorrgram2
Gambar 2 Correlation matrix berwarna
Grafik pada Gambar 3 berikut ini juga dibuat hanya dengan sebaris perintah “heatmap(as.matrix(mtcars))”. Juga dapat dilihat hirarki pengelompokkannya dalam bentuk garis. Yang menarik adalah:
  • bagaimana merk-merk Jepang mengelompok dengan merk Eropa, sementara merk Amerika membentuk kelompok sendiri (kecuali Dodge Challenger, AMC Javelin, Hornet, dan Valiant). Saya akan bahas di lain waktu.
  • Corolla dan Civic sekelompok dengan Ferrari Dino dan Fiat, Mazda dengan Merc 280 berada pada kamar yang sama, serta Corona, Datsun di dalam ruangan yang sama dengan Porsche.
Sangat menarik bukan. Yang seperti ini sangat bisa diterapkan di geologi juga.
IMG_0020
Gambar 3 Heatmap dan PCA
Yang menarik lagi grafik pada Gambar 4 berikut ini. Ada yang bisa menjelaskan? Saya akan bahas di lain waktu, atau sekaligus saya harus alih profesi jadi wartawan tabloid “Otomotif”.
Masih mau pakai Excel?
🙂
image
Gambar 4 Analisis mpg ~ disp (cc) ~ cyl

 

Attention to participants: Intro to R and Reference Management

WTF4

(image from: writingclassesforkids.com)

For Intro to R and Reference Management course participant.

Be sure to download and install all the required softwares prior to enter the class.

1) R base from cran.r-project.org
2) R Studio from rstudio.com
3) zotero app, zotero addins for firefox, zotero addins for MsWord/LibreOffice from zotero.org

See you later in class.

View on Path