Hocam, bütün kod bloklarını tekrar etmek için açıklamasını chatgpt’ye yaptırıp not düşüyorum. Bu yüzden her şey kopyala yapıştır gibi duruyor ama anlamlandırmak için bana kolaylık sağlıyor.
library(haven)
library(dplyr)
library(knitr)
library(broom)
library(GGally)
library(scatterplot3d)
library(rgl)
performans <- read_sav("~/hacettepe/Rders/data/Performans.sav")
model <- lm(Performans ~ Motivasyon + Kaygi,data=performans)
glance(model)[,1]
## # A tibble: 1 × 1
## r.squared
## <dbl>
## 1 0.814
sqrt(glance(model)[,1]) #r.squared değerinin karekoku alınır
## # A tibble: 1 × 1
## r.squared
## <dbl>
## 1 0.902
Neden karekök?
Çünkü R^2 (R kare) aslında çoklu korelasyon katsayısının karesidir. Bu yüzden tekrar R’yi bulmak istiyorsan sqrt(R^2) alırsın.
Motivasyon ve Kaygı birlikte, Performanstaki değişimin %81’ini açıklıyor Motivasyon ve Kaygı’nın birleşimi, Performans ile %90 oranında ilişkilidir.
Neden çoklu korelasyon katsayısı 0 ile 1 arasında değişir
Eğer R = 1 çıkarsa → Model mükemmel tahmin yapıyor.
R = 0 çıkarsa → Model ne tahmin ettiyse alakası yok.
Korelasyon negatif olabilir. O zaman R neden -1 olamıyor. Sebebi “en küçük kareler yöntemi”.
mantığı varyansa benziyor.
model_s <- augment(model,data=performans)
cor(model_s[,1], model_s[,5]) # Y ve Y' arası korelasyon
## .fitted
## Performans 0.9019952
Amacımız ne? - Modelin tahmin ettiği performans değerleri (Y’) ile, gerçek performans değerleri (Y) arasında korelasyon hesaplamak. - Yani “Model gerçekten iyi tahmin yapmış mı?” bunu sayısal olarak görmek istiyoruz.
not R^2 = determinasyon katsayısı. Kelime olarak determinasyon = “belirleme, açıklama” demektir.
glance(model)[,2]
## # A tibble: 1 × 1
## adj.r.squared
## <dbl>
## 1 0.783
Bu satır modelin adj R² değerini otomatik verir.
Ne kadar alakasız bir değişken eklersen bile, R² ya aynı kalır ya da artar.
Diyelim ki modelde “Motivasyon” vardı ve R² = 0.75
adj R² (düzeltilmiş R²)
res <- model$residuals
Bu satırda modelin artıklarını (hatalarını) alıyoruz:
Yani her bir gözlemde: gerçek değer - tahmin edilen değer
sqrt(sum((res - mean(res)) ^ 2 / (length(res)-3)))
## [1] 3.650458
glance(model)[,3]
## # A tibble: 1 × 1
## sigma
## <dbl>
## 1 3.65
Bu satır direkt olarak modelin kestirimin standart hatasını verir.
Sıfır hipotezi:
Ama biz modeli çalıştırınca bir F değeri ve buna karşılık gelen bir p değeri elde ederiz.
glance(model)[,4:6] %>% kable(digit=3)
statistic | p.value | df |
---|---|---|
26.188 | 0 | 2 |
p değeri 0.05’ten küçük olduğu için:
Şunu merak ediyorsun: “Kaygıyı sabit tutsak, yani tüm öğrenciler aynı düzeyde kaygıya sahip olsa… Sadece motivasyon arttığında, performans da artar mı?”
1.Performansı sadece kaygıya göre açıklayan bir denklem kuruyoruz.
Bu denklem “kaygı ile açıklanabilen kısmı” buluyor. Biz onun dışındaki kısmı alıyoruz — bu da “kaygıdan bağımsız performans” oluyor. Bunu şöyle yazıyoruz:
artikPER1 <- lm(Performans ~ Kaygi, data=performans)$residuals
2. Aynı şeyi motivasyon için yapıyoruz.
Yani: Motivasyonun içinden kaygı etkisini çıkarıyoruz. Elimizde “kaygıdan bağımsız motivasyon” kalıyor:
artikMOT <- lm(Motivasyon ~ Kaygi, data=performans)$residuals
Artık elimizde ne var?
İki şey var:
Şunu soruyoruz:
“Kaygı sabitken, motivasyon artarsa performans artar mı?”
Bunun cevabını bulmak için artıkPER1 ve artıkMOT arasında ilişki kuruyoruz:
lm(artikPER1 ~ artikMOT,
data=data.frame(artikPER1,artikMOT))$coefficients %>% kable(digit=3)
x | |
---|---|
(Intercept) | 0.000 |
artikMOT | 0.686 |
Motivasyon 1 puan artarsa, performans yaklaşık 0.69 puan artar (kaygı sabitken)
B₀ Nasıl Hesaplanır?
Formül şu:
𝐵0=Performans ortalaması −𝐵1⋅Motivasyon ortalaması−𝐵2⋅Kaygı ortalamas
mean(performans$Performans)-
model$coefficients[2]*mean(performans$Motivasyon)-
model$coefficients[3]*mean(performans$Kaygi)
## Motivasyon
## 1.744129
Neden yapıyoruz?
Çünkü bazı değişkenler küçük sayılarla (örneğin 1–5), bazıları büyük sayılarla (örneğin 0–100) ölçülmüş olabilir.
Aşağıdaki komut, modeldeki tüm değişkenleri standartlaştırıyor ve yeni bir regresyon modeli oluşturuyor.
library(QuantPsyc)
lm.beta(model) %>% kable(digit=3)
x | |
---|---|
Motivasyon | 0.879 |
Kaygi | -0.370 |
Mutlak değerlerini alırsak, Motivasyon, kaygıya göre daha güçlü bir yordayıcıdır.
not
“Standartlaştırılmış regresyon katsayısı, bağımlı değişken ile bağımsız değişkenin korelasyonudur.”
Ancak bu tahmin, her zaman tam isabetli olmaz. Çünkü her öğrencinin performansını sadece motivasyon ve kaygı belirlemez. Başka şeyler de vardır (zeka, uykusuzluk, dikkat, moral vb.).
İşte bu farkı görmek için iki kavram kullanılır:
data.frame(
gercek = performans$Performans,
yordanan = model$fitted.values,
artik = model$residuals) %>% kable(digit=3)
gercek | yordanan | artik |
---|---|---|
12.371 | 7.461 | 4.910 |
4.112 | 6.869 | -2.757 |
21.627 | 24.750 | -3.123 |
24.921 | 22.949 | 1.972 |
26.088 | 26.804 | -0.716 |
17.701 | 22.416 | -4.715 |
10.272 | 11.837 | -1.565 |
18.898 | 22.384 | -3.485 |
19.200 | 15.558 | 3.642 |
17.751 | 18.013 | -0.262 |
35.501 | 27.692 | 7.809 |
18.041 | 19.201 | -1.160 |
11.358 | 10.658 | 0.701 |
24.256 | 24.502 | -0.246 |
10.542 | 11.546 | -1.004 |
Neden önemli?
Böylece:
library(outliers)
yordanan_s <- model$fitted.values %>% scores(type = "z")
artik_s <- model$residuals %>% scores(type = "z")
data.frame(yordanan_s,artik_s) %>% kable(digit=3)
yordanan_s | artik_s |
---|---|
-1.518 | 1.453 |
-1.601 | -0.816 |
0.931 | -0.924 |
0.676 | 0.584 |
1.222 | -0.212 |
0.601 | -1.395 |
-0.898 | -0.463 |
0.596 | -1.031 |
-0.371 | 1.078 |
-0.023 | -0.077 |
1.348 | 2.311 |
0.145 | -0.343 |
-1.065 | 0.207 |
0.896 | -0.073 |
-0.939 | -0.297 |