Grafiklerin kolay okunması adına veri sayısının azaltılması amacıyla sınıf düzeylerine ilişkin değişkenin her düzeyinden 15’şer kişilik örneklem seçilip toplam 60 gözlemle “df2” nesnesi oluşturulması
library(tuev)
library(expss)
library(dplyr)
library(ggplot2)
df1 <- PISA_OGR_2018 %>%
select(SINIF,CINSIYET,OK_YETERLIK,ODOKUMA1,ST097Q01TA,ST097Q02TA,ST097Q03TA,ST097Q04TA,ST097Q05TA) %>%
na.omit()%>%
drop_var_labs()
df2 <- df1 %>%
drop_var_labs() %>%
filter(SINIF %in%c(8,9,10,11))%>%
group_by(SINIF)%>%
sample_n(15, replace=TRUE) %>%
ungroup()%>%
mutate(SINIF=as.factor(SINIF), CINSIYET=as.factor(CINSIYET))
** basari puanlari ile yeterlik puanlari arasindaki iliskiyi gosteren grafigin plot fonksiyonu ile cizilmesi**
plot(OK_YETERLIK ~ ODOKUMA1 , data=df2)
Sutun grafiği olusturmak için ilk olarak frekans tablosu elde etmek gerekir. Frekans tablosu table()fonkisyonu ile olusturulabilir.
Madde1_ozet <- table(df2$ST097Q01TA)
Madde1_ozet
##
## 1 2 3 4
## 3 2 36 19
Dikey sutun grafiği olusturmak icin barplot() fonksiyonu kullanımı
barplot(Madde1_ozet,
main="Madde 1 Cevap Dağılımı",
xlab="Cevap Kategorisi",
ylab="Frekans")
Yatay sutun grafiği olusturmak icin barplot() fonksiyonu horizargümanı ile kullanımı
# yatay cizilmesi
barplot(Madde1_ozet,
main="Madde 1 Cevap Dağılımı",
xlab="Cevap Kategorisi",
ylab="Frekans",
horiz=TRUE)
Kategorik değişkenlerin her bir değeri için sütun grafiği oluşturulması
İlk olarak frekans talosu olusturulur. Grafiklerde kategorik degiskenlerin etiketleri gorunmesi icin kategorik degiskene etiket ataması yapılır
# Cinsiyete Göre Madde 2 Cevap Dağılımı
df2$ST097Q02TA
## [1] 2 2 1 4 3 2 3 2 1 3 1 1 4 1 3 3 3 3 1 4 3 4 4 4 3 3 3 4 3 3 2 3 3 3 4 4 4 3
## [39] 3 3 3 3 3 3 3 3 4 3 2 4 4 3 3 4 3 3 3 3 3 3
## attr(,"labels")
## Her ders Derslerin cogunda cogunlukla test dili
## 1 2 3
## Bazi derslerde
## 4
# "Cinsiyet" değişkenindeki "1" ve "2" değerlerinin "Kız" ve "Erkek" değerlerine dönüştürülmesi
(df2$CINSIYET <- factor(df2$CINSIYET ,
labels = c("Kız", "Erkek")))
## [1] Kız Kız Kız Erkek Erkek Erkek Erkek Erkek Kız Erkek Kız Kız
## [13] Kız Kız Erkek Kız Kız Erkek Kız Kız Kız Kız Erkek Erkek
## [25] Erkek Erkek Erkek Kız Erkek Erkek Kız Kız Erkek Kız Erkek Kız
## [37] Kız Kız Erkek Erkek Kız Erkek Kız Erkek Kız Kız Kız Kız
## [49] Kız Kız Erkek Kız Erkek Kız Erkek Erkek Erkek Kız Kız Erkek
## Levels: Kız Erkek
Cinsiyete Göre Madde 2 Cevap Dağılımı
# Cinsiyete Göre Madde 2 Cevap Dağılımı
Madde2_ozet <- table(df2$CINSIYET,df2$ST097Q02TA)
Madde2_ozet
##
## 1 2 3 4
## Kız 6 4 14 9
## Erkek 0 2 20 5
Kategorik değişken etiketleri legend argumanı ile eklenebilir.
barplot(Madde2_ozet,
main="Cinsiyete Göre Madde 2 Cevap Dağılımı",
xlab="Cevap Kategorisi",
ylab="Frekans",
col=c("red","gray"),
legend=rownames(Madde2_ozet))
Kategorik değişken gösterimi ayrı cubuklara da besideargümanı ile alınabilir.
# aynı grafikte cesitli degişiklikler yapalım beside argumanını kullanalım
barplot(Madde2_ozet,
main="Cinsiyete Göre Madde 2 Cevap Dağılımı",
xlab="Cevap Kategorisi",
ylab="Frekans",
col=c("red","gray"),
beside = TRUE,
legend=rownames(Madde2_ozet))
barplot() fonksiyonu fraklı kullanıları için?barplot ile incelemeler yapabilirsiniz.
barplot(GNP ~ Year, data = longley)
barplot(cbind(Employed, Unemployed) ~ Year, data = longley,beside = TRUE)
Pasta grafiklerinde genellikle gösterimler yüzdeler üzerinden hesaplanır.
# Cevap kategorilerinin frekans dağılımı
Madde1_ozet
##
## 1 2 3 4
## 3 2 36 19
# Cevap kategorilerinin yüzdelik dağılımı
yuzde <- round(Madde1_ozet/sum(Madde1_ozet)*100)
yuzde
##
## 1 2 3 4
## 5 3 60 32
Pasta dilimlerinin adlandırılması amacıyla karakter bir vektor olusşturulur. İsimlendire farklı şekillerde yapılabilir.
likert_ifade=c("Kolaylıkla yaparım","Zorlanarak yaparım", "Tek başıma çok zor yaparım","Yapamam")
likert_ifade
## [1] "Kolaylıkla yaparım" "Zorlanarak yaparım"
## [3] "Tek başıma çok zor yaparım" "Yapamam"
# likert ifadeler ile yuzdelerin birleştirilmesi
metin <- paste(likert_ifade, " ", yuzde, "%", sep="")
metin
## [1] "Kolaylıkla yaparım 5%" "Zorlanarak yaparım 3%"
## [3] "Tek başıma çok zor yaparım 60%" "Yapamam 32%"
Pasta dilimlerinin adlandırılması amacıyla karakter bir vektor olusşturulur. İsimlendire farklı şekillerde yapılabilir.
pie(Madde1_ozet, labels=metin, main="Madde 1 Yüzdelik Cevap Dağılımı", col=rainbow(4))
Uc boyutlu pasta grafikleri olusturmak amacıyla da farklı paketlerden de yararlanılabilir.
library(plotrix)
pie3D(Madde1_ozet,radius=1.5,labels=metin,explode=0.2,main="Madde 1 Yüzdelik Cevap Dağılımı")
En basit histogram grafiği hist() fonksiyonu ile çizilir.
attach(df2)
hist(ODOKUMA1)
hist(OK_YETERLIK)
İki uc deger eklenerek histogram grafiği çizilmesi
ODOKUMA_2 <- c(ODOKUMA1,900,1200)
hist(ODOKUMA_2)
Uc deger incelemenin cok sayıda yolu olmakla birlikte, bunlardan biri de kutu grafiklerinden yararlanmaktır.
boxplot(ODOKUMA_2)
Bazen uc degerler incelemesini de grupların ayrı ayrı düzeylerin (kategorik değişkene göre yapmak gerekir).
boxplot(ODOKUMA_2) # uc deger gorunmuyor
Kategorik değişkenin her bir değişkeni için kutu grafiği cizilmek istediğinde ise ~ ile formülasyon oluşturmak gerekir. Her bir sinif duzeyi icin kutu grafigi cizilmesi
boxplot(ODOKUMA1 ~ SINIF,
horizontol =TRUE,data=df2,
xlab= "Başarı Puanları",
ylab = "Sinif Düzeyleri",boxwex=0.5)
?boxplot komutunu çalıştırarak değişebileceğiniz argümanları iceleyebilirsiniz.
Nokta grafiği oluşturmak icin dotchart() fonksiyonundan yararlanılır.
dotchart(df2$OK_YETERLIK)
Nokta grafiği de bir değişkenin kategorilerine göre çizdirilebilir. Bu amaçla Ornek1 veri setinden okuma yeterlik puanları küçükten büyüğe sıralanbilir.
df2 <- df2[order(df2$OK_YETERLIK),]
head(df2,15)
## # A tibble: 15 x 9
## SINIF CINSIYET OK_YETERLIK ODOKUMA1 ST097Q01TA ST097Q02TA ST097Q03TA
## <fct> <fct> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 8 Kız -2.44 280. 3 1 3
## 2 8 Kız -2.44 360. 4 4 4
## 3 11 Erkek -1.47 508. 3 3 3
## 4 9 Erkek -1.10 425. 3 3 3
## 5 11 Kız -1.10 441. 3 4 3
## 6 11 Erkek -1.10 433. 3 4 4
## 7 9 Kız -0.994 397. 4 1 1
## 8 10 Kız -0.932 597. 3 3 2
## 9 9 Erkek -0.801 384. 4 3 3
## 10 9 Erkek -0.801 384. 4 3 3
## 11 10 Kız -0.548 496. 3 4 4
## 12 9 Erkek -0.442 462. 3 3 3
## 13 11 Erkek -0.442 408. 3 3 3
## 14 8 Kız -0.409 323. 3 1 4
## 15 9 Kız -0.409 466. 3 4 2
## # ... with 2 more variables: ST097Q04TA <dbl>, ST097Q05TA <dbl>
Olusturulacak nokta grafiğinde noktaların hangi renkle gosterilmesi isteniyorsa bu tanımlanabilir. Bu tanılama veri setine color isimli bir sütunla eklenmiştir.
# Sınıf düzeylerine renk atanması
df2 <- mutate(df2,
renk = ifelse(SINIF==8,"red",
ifelse(SINIF==9,"blue",
ifelse( SINIF==10,"orange","black"))))
Nokta Grafiğinin Oluşturulması
# Sınıf düzeylerine renk atanması
attach(df2)
dotchart(OK_YETERLIK, cex=.7, groups=SINIF, color=renk, pch=19,
main="Sınıflara Göre Puanları",
xlab="Puanları")
Yogunluk grafiği çizebilmke için ilk olarak olasılık yogunluk fonksiyonu olan densityfonksiyonunun kullanılması gerekir.
# 8. sınıflar icin
d1 <- density(df2$ODOKUMA1[SINIF==8])
#olusan d1 nesnesinin x ve y degerleri ile grafik cizilir.
plot(d1, main=" Başarı Puanları
Yoğunluk Grafiği 8. Sınıf")
polygon(d1, col="red", border="black")
Birde fazla grafiği tek bir alanda görmek için mfrow grafik parametresinden yararlanılır.
Bölünmek istenilen alan satır ve sütunlara gore ayrılabilir.
par(mfrow = c( satır sayısı,sutun sayısı))
Birinci satır birinci sutun
par(mfrow=c(2,2))
d1 <- density(df2$ODOKUMA1[SINIF==8])
plot(d1,main="Okuma Başarı Puanları Yoğunluk Grafiği 8. Sınıf")
polygon(d1, col="red", border="black")
Birinci satır ikinci sutun
par(mfrow=c(2,2))
d1 <- density(df2$ODOKUMA1[SINIF==8])
plot(d1,main="Okuma Başarı Puanları
Yoğunluk Grafiği 8. Sınıf")
polygon(d1, col="red", border="black")
d2 <- density(df2$ODOKUMA1[SINIF==9])
plot(d2, main="Okuma Başarı Puanları
Yoğunluk Grafiği 9. Sınıf")
polygon(d2, col="green", border="black")
İkinci satır birinci sutun
par(mfrow=c(2,2))
d1 <- density(df2$ODOKUMA1[SINIF==8])
plot(d1,main="Okuma Başarı Puanları
Yoğunluk Grafiği 8. Sınıf")
polygon(d1, col="red", border="black")
d2 <- density(df2$ODOKUMA1[SINIF==9])
plot(d2, main="Okuma Başarı Puanları
Yoğunluk Grafiği 9. Sınıf")
polygon(d2, col="green", border="black")
d3 <- density(df2$ODOKUMA1[SINIF==10])
plot(d3, main="Okuma Başarı Puanları
Yoğunluk Grafiği 10. Sınıf")
polygon(d3, col="blue", border="black")
İkinci satır ikinci sutun
par(mfrow=c(2,2))
d1 <- density(df2$ODOKUMA1[SINIF==8])
plot(d1,main="Okuma Başarı Puanları
Yoğunluk Grafiği 8. Sınıf")
polygon(d1, col="red", border="black")
d2 <- density(df2$ODOKUMA1[SINIF==9])
plot(d2, main="Okuma Başarı Puanları
Yoğunluk Grafiği 9. Sınıf")
polygon(d2, col="green", border="black")
d3 <- density(df2$ODOKUMA1[SINIF==10])
plot(d3, main="Okuma Başarı Puanları
Yoğunluk Grafiği 10. Sınıf")
polygon(d3, col="blue", border="black")
d4 <- density(df2$ODOKUMA1[SINIF==11])
plot(d4,main="Okuma Başarı Puanları
Yoğunluk Grafiği 11. Sınıf")
polygon(d4, col="yellow", border="black")
Garfik kaydetme islemi graik alanındaki export sekmesi ile yapılabilmektedir.
Bunun haricinde jpeg(), pdf() gibi kaydedilecek dosya türüne özgü fonksiyonla da aynı işlem yapılabilir.
Grafikler spesifik bir fonksiyonla kaydedildiği zaman dev.off() fonksiyonu ile işlem sonlandırılmalıdır. Bu işlem grafik grafik alanında görüntülenmez.
Grafiği jpeg olarak kaydetmek
# kaydetme
jpeg("Ornek1.jpg")
plot(OK_YETERLIK ~ ODOKUMA1 , data=df2,
xlim=c(0,1000), ylim=c(-7,7),xlab="Okuma Basari Puanlari", ylab="Okuma oz Yeterligi")
dev.off()
## png
## 2
Grafiği pdf olarak kaydetmek
# kaydetme
pdf("Ornek1.pdf") # Grafik boyutu kadar yer kaplar.
plot(OK_YETERLIK ~ ODOKUMA1 , data=df2,
xlim=c(0,1000), ylim=c(-7,7),xlab="Okuma Basari Puanlari", ylab="Okuma oz Yeterligi")
dev.off()
## png
## 2
Grafik kaydetmek isleminde sayfa boyutu da değiştirilebilir.
pdf("Ornek2.pdf", paper="a4") # A4 Sayfa boyutunda grafiği kaydeder.
plot(OK_YETERLIK ~ ODOKUMA1 , data=df2,
xlim=c(0,1000), ylim=c(-7,7),xlab="Okuma Basari Puanlari", ylab="Okuma oz Yeterligi")
dev.off()
## png
## 2
Bu ders notları “Atar, B., Atalay Kabasakal, K., Ünsal Özberk, E. B. , Özberk, E.. H. ve Kıbrıslıoğlu Uysal, N. (Baskıda). R ile Veri Analizi ve Psikometri Uygulamaları. PegemA Akademi”. kaynağından alınmıştır.