Temel değişim fikri ile başlayın. Başlangıç modeliniz, ortalamanın karelerindeki sapmaların toplamıdır. R ^ 2 değeri, alternatif bir model kullanılarak hesaplanan varyasyonun oranıdır. Örneğin, R-kare size, Y'deki değişimin ne kadarını, kare uzaklıklarını ortalamadan ziyade bir regresyon çizgisinden toplayarak kaçabileceğinizi söyler.
Çizilen basit regresyon problemi hakkında düşünürsek, bunun tamamen açık olduğunu düşünüyorum. Yatay eksen boyunca bir X tahmincisine ve dikey eksen boyunca bir Y cevabına sahip olduğunuz tipik bir saçılma grafiği düşünün.
Ortalama, Y'nin sabit olduğu arsa üzerinde yatay bir çizgidir. Y'deki toplam varyasyon, Y ortalaması ve her bir veri noktası arasındaki kare farkların toplamıdır. Ortalama çizgi ile her bir nokta arasındaki kare kesilerek eklenir.
Modelden regresyon çizgisine sahip olduktan sonra başka bir değişkenlik ölçüsü hesaplayabilirsiniz. Her Y noktası ile regresyon çizgisi arasındaki fark budur. Her biri yerine (Y - ortalama) kare (Y - regresyon çizgisindeki nokta) kare alıyoruz.
Eğer regresyon çizgisi yataydan başka bir şeyse, ortalamanın yerine bu hazır regresyon çizgisini kullandığımız zaman toplam mesafeyi azaltacağız - yani daha az açıklanamayan bir değişim var. Açıklanan ekstra varyasyon ile orijinal varyasyon arasındaki oran sizin R ^ 2’dir. Bu regresyon çizgisine uydurma ile açıklanan cevabınızdaki orijinal değişimin oranıdır.
Aşağıda, görselleştirmeye yardımcı olması için, ortalama, regresyon çizgisi ve regresyon çizgisinden her noktaya olan segmentlere sahip bir grafik için bazı R kodları verilmiştir:
library(ggplot2)
data(faithful)
plotdata <- aggregate( eruptions ~ waiting , data = faithful, FUN = mean)
linefit1 <- lm(eruptions ~ waiting, data = plotdata)
plotdata$expected <- predict(linefit1)
plotdata$sign <- residuals(linefit1) > 0
p <- ggplot(plotdata, aes(y=eruptions, x=waiting, xend=waiting, yend=expected) )
p + geom_point(shape = 1, size = 3) +
geom_smooth(method=lm, se=FALSE) +
geom_segment(aes(y=eruptions, x=waiting, xend=waiting, yend=expected, colour = sign),
data = plotdata) +
theme(legend.position="none") +
geom_hline(yintercept = mean(plotdata$eruptions), size = 1)