R Markdown üzerinde daha önce prettydoc paketi kullanılarak html uzantılı raporlama yapmıştım. Bu çalışmada ise prettydoc paketinde leonids teması kullanılarak R Markdown üzerinde html uzantılı raporlama yapılmıştır.
1 Yüklenen Kütüphaneler
Aşağıdaki R kod bloğunun çalıştırılmasından sonra kütüphanelerin yüklenip yüklenmediğine dair aşağıdaki gibi mantıksal vektör sonuçları gelecektir. Eğer mantıksal vektör sonuçlarının hepsi TRUE ise kütüphanelerin hepsini yüklenmiştir demektir. Kolaylık sağlaması açısından yukarıda kütüphanelerin yüklenmesini gösterir tabloyu da elde etmek ve daha kolay okumanız için yukarıdaki kod bloğu içerisinden kısa bir kod yazdım. Bu kod çalıştırıldığında aşağıdaki tabloda görüleceği üzere bütün kütüphaneler yüklenmiştir. Eğer ilgili kütüphane yüklenmemiş olursa “Paket Kurulumu Gerekli” ifadesi satırda yazacaktır. Satırda yazan bu uyarı metnine göre paketi ya kurar yada yüklersiniz. Bir paketin kurulması ile yüklenmesinin aynı şey olmadığını burada ifade etmek gerekir konuyu yabancı olanlar için. Paket kurulumu ilk defa yapılan bir işlem iken, paketin yüklenmesi zaten kurulan bir paketin yüklenmesi yani çalışır duruma getirilmesidir. İlk defa bir paket kurulumu gerçekleştiriliyorsa install.packages() fonksiyonunu, zaten bir paket kurulumu gerçekleştirilmiş ise ilgili paketin veya kütüphanenin yüklenmesi veya okunması için library() veya require() fonksiyonlarını kullanıyoruz. Fonksiyonlardaki parantez () içerisine yüklenecek paket veya kütüphane adını yazıyoruz.
<-c("dplyr","tibble","tidyr","ggplot2","ggthemes","readr","readxl","ggpubr","formattable", "ggstance", "pastecs","writexl", "psych", "GGally","pander", "rstatix","RColorBrewer", "htmlwidgets","kableExtra","stargazer","readr", "equatiomatic")
kütüphane<-sapply(kütüphane, require, character.only = TRUE, warn.conflicts = FALSE) yükle
## Warning: package 'ggpubr' was built under R version 4.0.5
## Warning: package 'equatiomatic' was built under R version 4.0.5
#Kütüphane yüklenme durumunu gösteren tablo
=suppressWarnings(yükle, classes = "warning")
tablo
=names(tablo)
isim
=as_tibble(tablo)
deger
data.frame(sıra=1:length(isim), kütüphane=isim, yuklenme_durumu=deger$value) %>% mutate(yuklenme_durumu=if_else(yuklenme_durumu==TRUE, "Yuklendi", "Paket Kurulumu Gerekli")) %>% kbl(caption = "Kütüphane Yüklenme Bilgisi") %>% kable_classic_2(full_width = F, html_font="arial")
sıra | kütüphane | yuklenme_durumu |
---|---|---|
1 | dplyr | Yuklendi |
2 | tibble | Yuklendi |
3 | tidyr | Yuklendi |
4 | ggplot2 | Yuklendi |
5 | ggthemes | Yuklendi |
6 | readr | Yuklendi |
7 | readxl | Yuklendi |
8 | ggpubr | Yuklendi |
9 | formattable | Yuklendi |
10 | ggstance | Yuklendi |
11 | pastecs | Yuklendi |
12 | writexl | Yuklendi |
13 | psych | Yuklendi |
14 | GGally | Yuklendi |
15 | pander | Yuklendi |
16 | rstatix | Yuklendi |
17 | RColorBrewer | Yuklendi |
18 | htmlwidgets | Yuklendi |
19 | kableExtra | Yuklendi |
20 | stargazer | Yuklendi |
21 | readr | Yuklendi |
22 | equatiomatic | Yuklendi |
2 Tanımlayıcı İstatistikler
2.1 mtcars Veri Seti
Çalışma kapsamında R içerisinde bulunan mtcars
veri setinden yararlanarak tanımlayıcı ve çıkarımsal istatistikler ortaya konulmuştur.Veri seti 11 değişkenden ve 32 gözlemden oluşmaktadır.
- mpg:Mil/(ABD) galon
- cyl:Silindir sayısı
- disp:Displacement (m.in.)
- hp:Brüt beygir gücü
- drat:Arka aks oranı
- wt:Ağırlık (1000 lbs)
- qsec: 1/4 mil zaman
- vs:Motor (0 = V şeklinde, 1 = düz)
- am:Şanzıman (0 = otomatik, 1 = manuel)
- gear: İleri vites sayısı
=mtcars
veri%>% kbl() %>% kable_styling() veri
mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb | |
---|---|---|---|---|---|---|---|---|---|---|---|
Mazda RX4 | 21.0 | 6 | 160.0 | 110 | 3.90 | 2.620 | 16.46 | 0 | 1 | 4 | 4 |
Mazda RX4 Wag | 21.0 | 6 | 160.0 | 110 | 3.90 | 2.875 | 17.02 | 0 | 1 | 4 | 4 |
Datsun 710 | 22.8 | 4 | 108.0 | 93 | 3.85 | 2.320 | 18.61 | 1 | 1 | 4 | 1 |
Hornet 4 Drive | 21.4 | 6 | 258.0 | 110 | 3.08 | 3.215 | 19.44 | 1 | 0 | 3 | 1 |
Hornet Sportabout | 18.7 | 8 | 360.0 | 175 | 3.15 | 3.440 | 17.02 | 0 | 0 | 3 | 2 |
Valiant | 18.1 | 6 | 225.0 | 105 | 2.76 | 3.460 | 20.22 | 1 | 0 | 3 | 1 |
Duster 360 | 14.3 | 8 | 360.0 | 245 | 3.21 | 3.570 | 15.84 | 0 | 0 | 3 | 4 |
Merc 240D | 24.4 | 4 | 146.7 | 62 | 3.69 | 3.190 | 20.00 | 1 | 0 | 4 | 2 |
Merc 230 | 22.8 | 4 | 140.8 | 95 | 3.92 | 3.150 | 22.90 | 1 | 0 | 4 | 2 |
Merc 280 | 19.2 | 6 | 167.6 | 123 | 3.92 | 3.440 | 18.30 | 1 | 0 | 4 | 4 |
Merc 280C | 17.8 | 6 | 167.6 | 123 | 3.92 | 3.440 | 18.90 | 1 | 0 | 4 | 4 |
Merc 450SE | 16.4 | 8 | 275.8 | 180 | 3.07 | 4.070 | 17.40 | 0 | 0 | 3 | 3 |
Merc 450SL | 17.3 | 8 | 275.8 | 180 | 3.07 | 3.730 | 17.60 | 0 | 0 | 3 | 3 |
Merc 450SLC | 15.2 | 8 | 275.8 | 180 | 3.07 | 3.780 | 18.00 | 0 | 0 | 3 | 3 |
Cadillac Fleetwood | 10.4 | 8 | 472.0 | 205 | 2.93 | 5.250 | 17.98 | 0 | 0 | 3 | 4 |
Lincoln Continental | 10.4 | 8 | 460.0 | 215 | 3.00 | 5.424 | 17.82 | 0 | 0 | 3 | 4 |
Chrysler Imperial | 14.7 | 8 | 440.0 | 230 | 3.23 | 5.345 | 17.42 | 0 | 0 | 3 | 4 |
Fiat 128 | 32.4 | 4 | 78.7 | 66 | 4.08 | 2.200 | 19.47 | 1 | 1 | 4 | 1 |
Honda Civic | 30.4 | 4 | 75.7 | 52 | 4.93 | 1.615 | 18.52 | 1 | 1 | 4 | 2 |
Toyota Corolla | 33.9 | 4 | 71.1 | 65 | 4.22 | 1.835 | 19.90 | 1 | 1 | 4 | 1 |
Toyota Corona | 21.5 | 4 | 120.1 | 97 | 3.70 | 2.465 | 20.01 | 1 | 0 | 3 | 1 |
Dodge Challenger | 15.5 | 8 | 318.0 | 150 | 2.76 | 3.520 | 16.87 | 0 | 0 | 3 | 2 |
AMC Javelin | 15.2 | 8 | 304.0 | 150 | 3.15 | 3.435 | 17.30 | 0 | 0 | 3 | 2 |
Camaro Z28 | 13.3 | 8 | 350.0 | 245 | 3.73 | 3.840 | 15.41 | 0 | 0 | 3 | 4 |
Pontiac Firebird | 19.2 | 8 | 400.0 | 175 | 3.08 | 3.845 | 17.05 | 0 | 0 | 3 | 2 |
Fiat X1-9 | 27.3 | 4 | 79.0 | 66 | 4.08 | 1.935 | 18.90 | 1 | 1 | 4 | 1 |
Porsche 914-2 | 26.0 | 4 | 120.3 | 91 | 4.43 | 2.140 | 16.70 | 0 | 1 | 5 | 2 |
Lotus Europa | 30.4 | 4 | 95.1 | 113 | 3.77 | 1.513 | 16.90 | 1 | 1 | 5 | 2 |
Ford Pantera L | 15.8 | 8 | 351.0 | 264 | 4.22 | 3.170 | 14.50 | 0 | 1 | 5 | 4 |
Ferrari Dino | 19.7 | 6 | 145.0 | 175 | 3.62 | 2.770 | 15.50 | 0 | 1 | 5 | 6 |
Maserati Bora | 15.0 | 8 | 301.0 | 335 | 3.54 | 3.570 | 14.60 | 0 | 1 | 5 | 8 |
Volvo 142E | 21.4 | 4 | 121.0 | 109 | 4.11 | 2.780 | 18.60 | 1 | 1 | 4 | 2 |
2.2 Tanımlayıcı İstatistikler Tablosu
<- within(veri, {
veri1 <- factor(vs, labels = c("V", "S")) #değişkenin nominal kategorik veri tipine dönüştürülmesi
vs <- factor(am, labels = c("otomatik", "manuel")) #değişkenin nominal kategorik veri tipine dönüştürülmesi
am <- ordered(cyl) # değişkenin nominal sıra ölçekli veri tipine dönüştürülmesi
cyl <- ordered(gear) # değişkenin nominal sıra ölçekli veri tipine dönüştürülmesi
gear <- ordered(carb) # değişkenin nominal sıra ölçekli veri tipine dönüştürülmesi
carb
})
=names(veri1) %in% c("vs", "am", "cyl","gear", "carb") # tanımlayıcı istatistiklerden çıkarılacak nominal değişkenler
cikarma
summary(veri[!cikarma]) %>% kbl(caption = "Tanımlayıcı İstatistikler") %>%
kable_classic(full_width = F, html_font = "Cambria")
mpg | disp | hp | drat | wt | qsec | |
---|---|---|---|---|---|---|
Min. :10.40 | Min. : 71.1 | Min. : 52.0 | Min. :2.760 | Min. :1.513 | Min. :14.50 | |
1st Qu.:15.43 | 1st Qu.:120.8 | 1st Qu.: 96.5 | 1st Qu.:3.080 | 1st Qu.:2.581 | 1st Qu.:16.89 | |
Median :19.20 | Median :196.3 | Median :123.0 | Median :3.695 | Median :3.325 | Median :17.71 | |
Mean :20.09 | Mean :230.7 | Mean :146.7 | Mean :3.597 | Mean :3.217 | Mean :17.85 | |
3rd Qu.:22.80 | 3rd Qu.:326.0 | 3rd Qu.:180.0 | 3rd Qu.:3.920 | 3rd Qu.:3.610 | 3rd Qu.:18.90 | |
Max. :33.90 | Max. :472.0 | Max. :335.0 | Max. :4.930 | Max. :5.424 | Max. :22.90 |
2.3 Tanımlayıcı İstatistikler Tablosu Alternatifi
=names(veri1) %in% c("vs", "am", "cyl","gear", "carb") # tanımlayıcı istatistiklerden çıkarılacak nominal değişkenler
cikarma
stargazer(veri[!cikarma], type = "html",title="Tablo 1: Sürekli Değişkenlerde Tanımlayıcı İstatistikler Tablosu", digits=1, out="table3.html", flip=T)
Statistic | mpg | disp | hp | drat | wt | qsec |
N | 32 | 32 | 32 | 32 | 32 | 32 |
Mean | 20.1 | 230.7 | 146.7 | 3.6 | 3.2 | 17.8 |
St. Dev. | 6.0 | 123.9 | 68.6 | 0.5 | 1.0 | 1.8 |
Min | 10 | 71 | 52 | 2.8 | 1.5 | 14.5 |
Pctl(25) | 15.4 | 120.8 | 96.5 | 3.1 | 2.6 | 16.9 |
Pctl(75) | 22.8 | 326 | 180 | 3.9 | 3.6 | 18.9 |
Max | 34 | 472 | 335 | 4.9 | 5.4 | 22.9 |
2.4 Vites türüne göre yakıt tüketimleri ve beygir güçleri
Veri setinde ‘mpg’ değişkeni yakıt tüketimini, ‘am’ değişkeni vites tipini ve ‘hp’ değişkeni ise beygir gücünü göstermektedir.
%>% ggplot(aes(x=mpg, y=hp, col=(am))) + geom_point()+
veri1 facet_wrap(. ~ am, scales="free_y")+
theme_economist()+
theme(legend.position = "none")+
theme(
strip.text.x = element_text(
size = 12, color = "black", face = "bold"
))
Şekil 1.1 Vites türüne göre yakıt tüketimleri
2.5 Eşitlik yazma
Eşitlik ortalanmak isteniyorsa eşitliğin soluna ve sağına çift dolar işareti ilave edilir. Eşitlik sola yaslanacaksa soluna ve sağına tek dolar işareti eklenir 11.
\[X_i\]
Büyüktür işareti
\[ x\ge y\]
Kesirli ifade yazımı
\[\frac{2}{3}\]
\[ x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a} \]
\[ E = mc^2 \]
Tabakalı örneklemede örneklem büyüklüğü formülü
İlgili değişken kesikli ise aşağıdaki eşitlik örneklem büyüklüüğünün hesaplanmasında kullanılır.
\[ n = \frac{Nt^2pq}{d^2(N-1)+t^2pq} \]
Standart sapma
\[\sigma = \sqrt{\frac{\sum\limits_{i=1}^{n} \left(x_{i} - \bar{x}\right)^{2}} {n-1}}\]
Sayı serilerini toplama
\[x_{1} + x_{2} + \cdots + x_{n}\]
\(Y = X\beta + \epsilon\),22.
3 Çıkarımsal İstatistikler
3.1 Modeli kurma ve eşitliklere dönüştürme
# Doğrusal regresyon modeli
<- lm(mpg ~ am + hp, veri1)
model1 # Teorik modeli gösterme
::extract_eq(model1) equatiomatic
\[ \operatorname{mpg} = \alpha + \beta_{1}(\operatorname{am}_{\operatorname{manuel}}) + \beta_{2}(\operatorname{hp}) + \epsilon \]
<- lm(mpg ~ am + hp+drat + wt, veri1) model2
3.2 Model 1 katsayılarını gösterme
::extract_eq(model1, use_coefs = TRUE, wrap = TRUE) equatiomatic
\[ \begin{aligned} \operatorname{\widehat{mpg}} &= 26.58 + 5.28(\operatorname{am}_{\operatorname{manuel}}) - 0.06(\operatorname{hp}) \end{aligned} \]
3.3 Model 2 katsayılarını gösterme
::extract_eq(model2, use_coefs = TRUE, wrap = TRUE) equatiomatic
\[ \begin{aligned} \operatorname{\widehat{mpg}} &= 30.03 + 1.58(\operatorname{am}_{\operatorname{manuel}}) - 0.04(\operatorname{hp}) + 0.98(\operatorname{drat})\ - \\ &\quad 2.73(\operatorname{wt}) \end{aligned} \]
3.4 Model 1 ve 2 Özeti
İki model karşılaştırıldığında kurulan 2. modelin açıklayıcılığı 1. modele göre daha yüksektir. Diğer bir ifadeyle düzeltilmiş R^2 (Adjusted R2) 1. modelde % yaklaşık % 76,7 iken 2. modelde % 82’dir.
stargazer(model1,model2, type = "html", title="Model Karşılaştırmaları", column.labels = c("Model 1", "Model 2"), colnames = FALSE, model.numbers = FALSE, notes.align = "l", add.lines = list(c("AIC", round(AIC(model1), 1), round(AIC(model2), 1))))
Dependent variable: | ||
mpg | ||
Model 1 | Model 2 | |
ammanuel | 5.277*** | 1.579 |
(1.080) | (1.559) | |
hp | -0.059*** | -0.036*** |
(0.008) | (0.010) | |
drat | 0.981 | |
(1.377) | ||
wt | -2.726*** | |
(0.938) | ||
Constant | 26.585*** | 30.027*** |
(1.425) | (6.185) | |
AIC | 164 | 157.5 |
Observations | 32 | 32 |
R2 | 0.782 | 0.843 |
Adjusted R2 | 0.767 | 0.820 |
Residual Std. Error | 2.909 (df = 29) | 2.560 (df = 27) |
F Statistic | 52.024*** (df = 2; 29) | 36.201*** (df = 4; 27) |
Note: | p<0.1; p<0.05; p<0.01 |
3.5 Regresyon Model1 Grafikleri
par(mfrow = c(2,2))
plot(model1)
3.6 Regresyon Model2 Grafikleri
par(mfrow = c(2,2))
plot(model2)
4 Sonuç
İki model karşılaştırıldığında kurulan 2. modelin açıklayıcılığı 1. modele göre daha yüksektir. Diğer bir ifadeyle düzeltilmiş R^2 (Adjusted R2) 1. modelde % yaklaşık % 76,7 iken 2. modelde % 82’dir. Benzer şekilde kurulan 2. model AIC (Akaike Information Criterion) değeri 1. modele göre daha düşük olduğu için 2. model tercih edilir. Model2’ten hareketle kullanılacak regresyon denklemimiz aşağıdaki gibi olacaktır.
::extract_eq(model2, use_coefs = TRUE, wrap = TRUE, terms_per_line = 2) equatiomatic
\[ \begin{aligned} \operatorname{\widehat{mpg}} &= 30.03 + 1.58(\operatorname{am}_{\operatorname{manuel}})\ - \\ &\quad 0.04(\operatorname{hp}) + 0.98(\operatorname{drat})\ - \\ &\quad 2.73(\operatorname{wt}) \end{aligned} \]
Yapılan bu R Markdown çalışmasının özellikle veri bilimi (data science) ile ilgilenen akademi ve saha çalışanlarına bir katkı sunacağı düşünülmektedir.
Faydalı olması ve farkındalık oluşturması dileğiyle.
Bilimle ve teknolojiyle kalınız.
Saygılarımla…
Not: Kaynak gösterilmeden alıntı yapılamaz veya kopyalanamaz.
Note: It can not be cited or copied without referencing.
5 Yararlanılan Kaynaklar
- https://github.com/yixuan/prettydoc/
- https://bookdown.org/yihui/rmarkdown-cookbook/equatiomatic.html
- https://rmd4sci.njtierney.com/math
- Anderson, Daniel, Andrew Heiss, and Jay Sumners. 2021. Equatiomatic: Transform Models into LaTeX Equations. https://github.com/datalorax/equatiomatic.
- https://rpruim.github.io/s341/S19/from-class/MathinRmd.html
- https://www.rdocumentation.org/packages/datasets/versions/3.6.2/topics/mtcars
- https://cran.r-project.org/web/packages/kableExtra/vignettes/awesome_table_in_html.html#Add_header_rows_to_group_columns
- https://tevfikbulut.com/2020/07/12/rda-multinominal-lojistik-regresyon-uzerine-bir-vaka-calismasi-a-case-study-on-multinominal-logistic-regression-in-r/
- https://cran.r-project.org/web/packages/prettydoc/index.html
- https://rmarkdown.rstudio.com/docs/
- https://cran.r-project.org/web/packages/equatiomatic/vignettes/intro-equatiomatic.html
- R Markdown Örnek Uygulama Raporu, https://rpubs.com/tevfik1461/Markdown. 18 Haziran 2021.
Buradaki adresten yararlanılabilir: https://rmd4sci.njtierney.com/math↩︎
Doğrusal regresyon modellerinde regresyon eşitliğini göstermektedir.↩︎