Saya mulai menggali sedikit ke fungsi plot.lm , fungsi ini memberikan enam plot untuk lm, yaitu:
- sebidang residual terhadap nilai yang dipasang
- plot Skala-Lokasi sqrt (| residual |) terhadap nilai yang dipasang
- plot QQ Normal, plot jarak Cook versus label baris
- sebidang residual terhadap leverage
- sebidang jarak Cook terhadap leverage / (1 leverage)
Dan saya bertanya-tanya apa ekstensi umum / berguna dari plot saat ini ada untuk model linier, dan bagaimana mereka dapat dilakukan dalam R? (tautan ke artikel paket juga disambut)
Jadi fungsi boxcox (dari {MASS}) adalah contoh plot diagnostik lain yang bermanfaat (dan jawaban seperti itu akan bagus), namun, saya lebih ingin tahu tentang variasi / ekstensi pada plot diagnostik default yang ada untuk lm di R (walaupun secara umum komentar lain tentang topik ini selalu disambut baik).
Berikut adalah beberapa contoh sederhana tentang apa yang saya maksud:
#Some example code for all of us to refer to
set.seed(2542)
x1 <- rnorm(100)
x2 <- runif(100, -2,2)
eps <- rnorm(100,0,2)
y <- 1 + 2*x1 + 3*x2 + eps
y[1:4] <- 14 # adding some contaminated points
fit <- lm(y~x1+x2)
#plot(y~x1+x2)
#summary(fit)
Untuk memplot residual vs masing-masing potensi x
plot(resid(fit)~x1); abline (h = 0)
plot(resid(fit)~x2); abline (h = 0)
# plot(resid(fit)~x1+x2) # you can also use this, but then you wouldn't be able to use the abline on any plot but the last one
Untuk menambahkan baris 0-1 (bagaimana baris ini disebut dalam bahasa Inggris ?!) ke qqplot jadi untuk melihat seberapa banyak qqline menyimpang darinya
plot(fit, which = 2); abline(0,1, col = "green")
Untuk memplot qq-plot menggunakan residual mahasiswa yang eksternal
# plot(fit, which = 2); abline(0,1, col = "green") # The next command is just like this one
qqnorm(rstandard(fit), ylim = c(-2.2,4.2)); qqline(rstudent(fit), lty = 2) ;abline(0,1, col = "green")
qqnorm(rstudent(fit), ylim = c(-2.2,4.2)); qqline(rstudent(fit), lty = 2) ;abline(0,1, col = "green")
# We can note how the "bad" points are more extreme when using the rstudent
r
regression
linear-model
diagnostic
Tal Galili
sumber
sumber
Jawaban:
Paket
car
memiliki cukup banyak fungsi yang berguna untuk plot diagnostik model linier dan linier umum. Dibandingkan dengan plot vanilla R, mereka sering ditingkatkan dengan informasi tambahan. Saya sarankan Anda mencobaexample("<function>")
fungsi-fungsi berikut untuk melihat seperti apa plotnya. Semua plot dijelaskan secara rinci dalam bab 6 dari Fox & Weisberg. 2011. Sahabat R untuk Regresi Terapan. 2nd ed.residualPlots()
plot residu Pearson terhadap setiap prediktor (plot sebaran untuk variabel numerik termasuk kecocokan Lowess, plot box untuk faktor)marginalModelPlots()
menampilkan scatterplots dari variabel respons terhadap setiap prediktor numerik, termasuk kecocokan LowessavPlots()
menampilkan plot regresi parsial: untuk setiap prediktor, ini adalah sebar plot a) residu dari regresi variabel respons terhadap semua prediktor lain terhadap b) residu dari regresi prediktor terhadap semua prediktor lainnyaqqPlot()
untuk plot kuantil-kuantil yang mencakup amplop kepercayaaninfluenceIndexPlot()
menampilkan setiap nilai untuk jarak Cook, nilai topi, nilai p untuk uji outlier, dan residualisasi siswa dalam spike-plot terhadap indeks pengamataninfluencePlot()
memberikan plot-gelembung residu pelajar terhadap nilai-nilai topi, dengan ukuran gelembung sesuai dengan jarak Cook, juga melihatdfbetaPlots()
danleveragePlots()
boxCox()
crPlots()
adalah untuk plot komponen + residual, varian di antaranya adalah plot CERES (Menggabungkan Harapan bersyarat dan RESIDUAL), yang disediakan olehceresPlots()
spreadLevelPlot()
adalah untuk menilai varians kesalahan yang tidak konstan dan menampilkan residu mahasiswa yang absolut terhadap nilai yang dipasangscatterplot()
memberikan scatterplot yang jauh lebih baik termasuk plot kotak di sepanjang sumbu, elips kepercayaan untuk distribusi bivariat, dan garis prediksi dengan pita kepercayaanscatter3d()
didasarkan pada paketrgl
dan menampilkan 3D-scatterplot interaktif termasuk ellipsoid kepercayaan-kawat dan pesawat prediksi, pastikan untuk menjalankanexample("scatter3d")
Selain itu, lihat
bplot()
dari paketrms
untuk pendekatan lain untuk menggambarkan distribusi umum dari tiga variabel.sumber
Jawaban ini fokus pada apa yang tersedia di basis R, daripada paket eksternal, meskipun saya setuju bahwa paket Fox layak untuk diadopsi.
Fungsi
influence()
(atau pembungkusnyainfluence.measures()
) mengembalikan sebagian besar yang kita perlukan untuk diagnostik model, termasuk statistik yang dinamai. Sebagaimana dinyatakan dalam Model Statistik Chambers dan Hastie dalam S (Wadsworth & Brooks, 1992), dapat digunakan dalam kombinasi untuksummary.lm()
. Salah satu contoh yang disediakan dalam apa yang disebut "buku putih" (hal. 130-131) memungkinkan untuk menghitung standar (residual dengan varian yang sama) dan dikelompokkan (residual dengan varian yang berbeda untuk SE), DFBETAS (perubahan dalam koefisien yang diskalakan oleh SE untuk koefisien regresi), DFFIT (perubahan nilai pas ketika pengamatan dijatuhkan), dan DFFITS (sama, dengan varian unit) mengukur tanpa banyak kesulitan.Berdasarkan contoh Anda, dan mendefinisikan objek berikut:
kita dapat menghitung jumlah di atas sebagai berikut:
(Ini Tabel 4.1 , hlm. 131.)
Chambers dan Hastie memberikan kode S / R berikut untuk menghitung DFBETAS:
Mengapa saya menyebutkan pendekatan itu? Karena, pertama, saya menemukan ini menarik dari perspektif pedagogis (itulah yang saya gunakan ketika mengajar kursus statistik pengantar) karena memungkinkan untuk menggambarkan apa yang dapat dihitung dari output dari model linier yang dipasang pada R (tetapi hal yang sama akan berlaku dengan paket statistik lainnya). Kedua, karena jumlah di atas akan dikembalikan sebagai vektor atau matriks sederhana dalam R, itu juga berarti bahwa kita dapat memilih perangkat grafis yang kita inginkan --- lattice atau ggplot --- untuk menampilkan statistik tersebut, atau menggunakannya untuk meningkatkan yang sudah ada plot (mis., sorot nilai DFFITS dalam sebaran dengan ukuran titik yang bervariasi
cex
).sumber