Bagaimana Anda mengeluarkan nilai-p (untuk signifikansi koefisien variabel penjelas tunggal yang tidak nol) dan nilai R-kuadrat dari model regresi linier sederhana? Sebagai contoh...
x = cumsum(c(0, runif(100, -1, +1)))
y = cumsum(c(0, runif(100, -1, +1)))
fit = lm(y ~ x)
summary(fit)
Saya tahu bahwa summary(fit)
menampilkan nilai p-nilai dan nilai R-kuadrat, tapi saya ingin dapat memasukkan ini ke variabel lain.
r <- summary(lm(rnorm(10)~runif(10)))
Tidak menampilkan apa pun).Jawaban:
r-squared : Anda dapat mengembalikan nilai r-squared langsung dari objek ringkasan
summary(fit)$r.squared
. Lihatnames(summary(fit))
daftar semua barang yang bisa Anda ekstrak langsung.Nilai p Model: Jika Anda ingin mendapatkan nilai p dari model regresi keseluruhan, posting blog ini menguraikan fungsi untuk mengembalikan nilai p:
Dalam kasus regresi sederhana dengan satu prediktor, model p-value dan p-value untuk koefisien akan sama.
Nilai p koefisien: Jika Anda memiliki lebih dari satu prediktor, maka nilai di atas akan mengembalikan nilai p model, dan nilai p untuk koefisien dapat diekstraksi menggunakan:
Atau, Anda bisa mengambil nilai p dari koefisien dari
anova(fit)
objek dengan cara yang mirip dengan objek ringkasan di atas.sumber
inherits
daripadaclass
langsung. Dan mungkin Anda mauunname(pf(f[1],f[2],f[3],lower.tail=F))
?Perhatikan bahwa
summary(fit)
menghasilkan objek dengan semua informasi yang Anda butuhkan. Vektor beta, se, t dan p disimpan di dalamnya. Dapatkan nilai-p dengan memilih kolom ke-4 dari matriks koefisien (disimpan dalam objek ringkasan):Cobalah
str(summary(fit))
untuk melihat semua info yang berisi objek ini.Sunting: Saya salah membaca jawaban Chase yang pada dasarnya memberi tahu Anda cara mendapatkan apa yang saya berikan di sini.
sumber
summary(fit)$coefficients[1,4]
untuk merekalm()
tetapi tidak berfungsi untukgls()
model.Anda dapat melihat struktur objek yang dikembalikan
summary()
dengan meneleponstr(summary(fit))
. Setiap bagian dapat diakses menggunakan$
. Nilai p untuk statistik F lebih mudah didapat dari objek yang dikembalikan olehanova
.Secara ringkas, Anda dapat melakukan ini:
sumber
Meskipun kedua jawaban di atas baik, prosedur untuk mengekstraksi bagian-bagian objek lebih umum.
Dalam banyak kasus, daftar fungsi kembali, dan masing-masing komponen dapat diakses menggunakan
str()
yang akan mencetak komponen beserta namanya. Anda kemudian dapat mengaksesnya menggunakan $ operator, yaitumyobject$componentname
.Dalam kasus obyek lm, ada sejumlah metode yang telah ditetapkan yang bisa digunakan seperti
coef()
,resid()
,summary()
dll, tetapi Anda tidak akan selalu begitu beruntung.sumber
Saya menemukan pertanyaan ini sambil mengeksplorasi solusi yang disarankan untuk masalah yang sama; Saya berasumsi bahwa untuk referensi di masa mendatang mungkin ada gunanya memperbarui daftar jawaban yang tersedia dengan solusi memanfaatkan
broom
paket.Kode sampel
Hasil
Catatan samping
Saya menemukan
glance
fungsi ini berguna karena meringkas nilai-nilai kunci dengan rapi. Hasil disimpan sebagaidata.frame
yang membuat manipulasi lebih mudah:sumber
Perpanjangan jawaban @Vincent :
Untuk
lm()
model yang dihasilkan:Untuk
gls()
model yang dihasilkan:Untuk mengisolasi nilai p individu itu sendiri, Anda akan menambahkan nomor baris ke kode:
Misalnya untuk mengakses nilai p intersep di kedua ringkasan model:
Catatan, Anda dapat mengganti nomor kolom dengan nama kolom di masing-masing contoh di atas:
Jika Anda masih tidak yakin tentang cara mengakses nilai dari tabel ringkasan gunakan
str()
untuk mengetahui struktur tabel ringkasan:sumber
Ini adalah cara termudah untuk menarik nilai-p:
sumber
Saya menggunakan fungsi lmp ini cukup banyak.
Dan pada satu titik saya memutuskan untuk menambahkan fitur baru untuk meningkatkan analisis data. Saya tidak ahli dalam R atau statistik tetapi orang biasanya melihat informasi yang berbeda dari regresi linier:
Mari kita punya contoh. Anda punya di sini
Di sini contoh yang direproduksi dengan variabel yang berbeda:
Tentu ada solusi yang lebih cepat daripada fungsi ini tetapi berfungsi.
sumber
Untuk nilai-p akhir yang ditampilkan di akhir
summary()
, fungsi digunakanpf()
untuk menghitung darisummary(fit)$fstatistic
nilai - nilai.Sumber: [1] , [2]
sumber
sumber
Pilihan lain adalah menggunakan fungsi cor.test, alih-alih lm:
sumber
Menggunakan:
di mana
num
adalah angka yang menunjukkan deretan matriks koefisien. Ini akan tergantung pada berapa banyak fitur yang Anda miliki dalam model Anda dan yang mana Anda ingin menarik nilai p. Misalnya, jika Anda hanya memiliki satu variabel, akan ada satu nilai p untuk intersep yang akan menjadi [1,4] dan yang berikutnya untuk variabel aktual Anda yang akan menjadi [2,4]. Jadi Andanum
akan 2.sumber