Saya punya plot pencar. Bagaimana saya bisa menambahkan garis tren non-linear?
r
data-visualization
nonlinear-regression
trend
Karina Khusainova
sumber
sumber
Jawaban:
Mari kita buat beberapa data.
Berikut ini menunjukkan bagaimana Anda dapat menyesuaikan garis loess atau kecocokan regresi non-linear.
sumber
Jika Anda menggunakan
ggplot2
(sistem plot ketiga, dalam R, setelah basis R dan kisi), ini menjadi:Anda dapat memilih bagaimana data dihaluskan: lihat
?stat_smooth
detail dan contoh.sumber
stat_smooth
dengan mengetik?stat_smooth
seperti kata Vincent. :-)Tanpa tahu persis apa yang Anda cari, menggunakan
lattice
paket Anda dapat dengan mudah menambahkan kurva loesstype="smooth"
; misalnya,Lihat
help("panel.loess")
argumen yang dapat diteruskan ke rutinitas loess fitting untuk mengubah, misalnya, tingkat polinomial yang akan digunakan.Memperbarui
Untuk mengubah warna kurva loess, Anda dapat menulis fungsi kecil dan meneruskannya sebagai
panel
parameter kexyplot
:sumber
Pertanyaan Anda agak kabur, jadi saya akan membuat beberapa asumsi tentang apa masalah Anda. Ini akan banyak membantu jika Anda bisa memasang sebar dan gambarkan data sedikit. Tolong, jika saya membuat asumsi yang buruk maka abaikan jawaban saya.
Pertama, mungkin data Anda menggambarkan beberapa proses yang menurut Anda wajar adalah non-linear. Misalnya, jika Anda mencoba melakukan regresi pada jarak untuk mobil berhenti dengan pengereman mendadak vs kecepatan mobil, fisika memberi tahu kita bahwa energi kendaraan sebanding dengan kuadrat kecepatan - bukan kecepatan diri. Jadi, Anda mungkin ingin mencoba regresi polinomial dalam kasus ini, dan (dalam R) Anda dapat melakukan sesuatu seperti
model <- lm(d ~ poly(v,2),data=dataset)
. Ada banyak dokumentasi tentang cara memasukkan berbagai non-linearitas ke dalam model regresi.Di sisi lain, jika Anda memiliki garis yang "goyah" dan Anda tidak tahu mengapa itu goyah, maka titik awal yang baik mungkin adalah regresi tertimbang secara lokal, atau
loess
dalam R. Ini melakukan regresi linier pada kecil wilayah, yang bertentangan dengan seluruh dataset. Paling mudah untuk membayangkan versi "k terdekat-tetangga", di mana untuk menghitung nilai kurva pada titik mana pun, Anda menemukan titik k terdekat dengan tempat tujuan, dan rata-rata. Loess memang seperti itu tetapi menggunakan regresi bukannya rata-rata lurus. Untuk ini, gunakanmodel <- loess(y ~ x, data=dataset, span=...)
, di manaspan
variabel mengontrol tingkat perataan.Di pihak ketiga (kehabisan tangan) - Anda berbicara tentang tren? Apakah ini masalah sementara? Jika ya, berhati-hatilah dengan menafsirkan garis tren dan signifikansi statistik secara berlebihan. Tren dalam deret waktu dapat muncul dalam proses "autoregresif", dan untuk proses ini keacakan proses kadang-kadang dapat membuat tren keluar dari kebisingan acak, dan uji signifikansi statistik yang salah dapat memberi tahu Anda itu signifikan ketika tidak!
sumber
Menempatkan titik sampel plot sebaran dan kurva halus pada grafik yang sama:
sumber