Mengidentifikasi outlier untuk regresi non linier

11

Saya sedang melakukan penelitian di bidang respon fungsional tungau. Saya ingin melakukan regresi untuk memperkirakan parameter (tingkat serangan dan waktu penanganan) dari fungsi Rogers tipe II. Saya memiliki dataset pengukuran. Bagaimana saya bisa menentukan outlier yang terbaik?

Untuk regresi saya, saya menggunakan skrip berikut dalam R (regresi non linier): (Dateet adalah file teks 2 kolom sederhana yang disebut data.txtfile dengan N0nilai (jumlah mangsa awal) dan FRnilai (jumlah mangsa yang dimakan selama 24 jam):

library("nlstools")
dat <- read.delim("C:/data.txt")    
#Rogers type II model
a <- c(0,50)
b <- c(0,40)
plot(FR~N0,main="Rogers II normaal",xlim=a,ylim=b,xlab="N0",ylab="FR")
rogers.predII <- function(N0,a,h,T) {N0 - lambertW(a*h*N0*exp(-a*(T-h*N0)))/(a*h)}
params1 <- list(attackR3_N=0.04,Th3_N=1.46)
RogersII_N <-  nls(FR~rogers.predII(N0,attackR3_N,Th3_N,T=24),start=params1,data=dat,control=list(maxiter=    10000))
hatRIIN <- predict(RogersII_N)
lines(spline(N0,hatRIIN))
summary(RogersII_N)$parameters

Untuk memplot grafik residual calssic, saya menggunakan skrip berikut:

res <- nlsResiduals (RogersII_N)
plot (res, type = 0)
hist (res$resi1,main="histogram residuals")
    qqnorm (res$resi1,main="QQ residuals")
hist (res$resi2,main="histogram normalised residuals")
    qqnorm (res$resi2,main="QQ normalised residuals")
par(mfrow=c(1,1))
boxplot (res$resi1,main="boxplot residuals")
    boxplot (res$resi2,main="boxplot normalised residuals")

Pertanyaan

  • Bagaimana cara terbaik menentukan titik data mana yang outlier?
  • Apakah ada tes yang bisa saya gunakan dalam R yang objektif dan tunjukkan poin data mana yang outlier?
Joachim
sumber

Jawaban:

9

Beberapa tes untuk pencilan, termasuk Dixon dan Grubb, tersedia dalam outlierspaket di R. Untuk daftar tes, lihat dokumentasi untuk paket tersebut. Referensi yang menjelaskan tes diberikan pada halaman bantuan untuk fungsi yang sesuai.

Jika Anda berencana untuk menghapus pencilan dari data Anda, ingatlah bahwa ini tidak selalu disarankan. Lihat misalnya pertanyaan ini untuk diskusi tentang hal ini (serta beberapa saran lainnya tentang cara mendeteksi pencilan).

MånsT
sumber
8

Saya juga bukan ahli statistik. Oleh karena itu saya menggunakan pengetahuan ahli saya tentang data untuk mencari pencilan. Yaitu saya mencari alasan fisik / biologis / apa pun yang membuat beberapa pengukuran berbeda dari yang lain.

Dalam kasus saya itu misalnya

  • sinar kosmik mengacaukan bagian dari sinyal yang diukur
  • seseorang memasuki lab, menyalakan lampu
  • hanya seluruh spektrum entah bagaimana terlihat berbeda
  • seri pengukuran pertama diambil selama jam kerja normal dan merupakan urutan pembesaran yang lebih berisik daripada seri 22:00

Tentunya Anda bisa memberi tahu kami efek yang sama.

Perhatikan bahwa poin ke-3 saya berbeda dari yang lain: Saya tidak tahu apa yang terjadi. Ini mungkin jenis pencilan yang Anda tanyakan. Namun, tanpa mengetahui apa yang menyebabkannya (dan bahwa penyebab ini membatalkan titik data), sulit untuk mengatakan bahwa itu seharusnya tidak muncul dalam kumpulan data. Juga: pencilan Anda mungkin contoh paling menarik saya ...

Oleh karena itu, saya sering tidak berbicara tentang outlier, tetapi tentang poin data yang mencurigakan. Ini mengingatkan semua orang bahwa mereka perlu diperiksa dua kali untuk maknanya.

Apakah itu baik atau tidak untuk mengecualikan data (yang ingin mencari outlier hanya untuk memilikinya?) Sangat tergantung pada apa tugas yang ada dan apa "syarat batas" untuk tugas itu. Beberapa contoh:

  • Anda baru saja menemukan subspesies Joachimii outlierensis baru ;-) tidak ada alasan untuk mengecualikan mereka. Kecualikan semua yang lain.

  • Anda ingin memprediksi waktu tungau. Jika dapat membatasi prediksi pada kondisi tertentu, Anda dapat merumuskannya dan mengecualikan semua sampel lainnya dan mengatakan model prediksi Anda menangani situasi ini atau itu, meskipun Anda sudah mengetahui situasi lain (uraikan di sini) memang terjadi.

  • Ingatlah bahwa mengecualikan data dengan bantuan diagnostik model dapat membuat semacam ramalan yang memuaskan sendiri atau bias terlalu optimistis (yaitu jika Anda mengklaim metode Anda secara umum dapat diterapkan): semakin banyak sampel yang Anda kecualikan karena tidak sesuai dengan Anda asumsi, semakin baik asumsi dipenuhi oleh sampel yang tersisa. Tapi itu hanya karena pengecualian.

  • Saat ini saya memiliki tugas di mana saya memiliki banyak pengukuran buruk (saya tahu alasan fisik mengapa saya menganggap pengukuran buruk), dan beberapa lagi yang entah bagaimana "terlihat aneh". Apa yang saya lakukan adalah bahwa saya mengecualikan sampel ini dari trainig model (prediktif), tetapi secara terpisah menguji model dengan ini sehingga saya dapat mengatakan sesuatu tentang kekokohan model saya terhadap outliers dari tipe-tipe yang saya tahu akan terjadi setiap satu kali dalam sementara . Dengan demikian, aplikasi tersebut entah bagaimana atau kebutuhan lain untuk berurusan dengan outlier ini.

  • Namun cara lain untuk melihat outlier adalah dengan bertanya: "Seberapa besar mereka memengaruhi model saya?" (Pengaruh). Dari sudut pandang ini Anda dapat mengukur ketahanan atau stabilitas sehubungan dengan sampel pelatihan yang aneh.

  • Apa pun prosedur statistik yang Anda gunakan, itu tidak akan mengidentifikasi outlier, atau juga memiliki positif palsu. Anda dapat mengkarakterisasi prosedur pengujian outlier seperti tes diagnostik lainnya: ia memiliki sensitivitas dan spesifisitas, dan - lebih penting bagi Anda - mereka sesuai (melalui proporsi outlier dalam data Anda) dengan nilai prediksi positif dan negatif. Dengan kata lain, terutama jika data Anda memiliki outlier yang sangat sedikit, kemungkinan kasus yang diidentifikasi oleh tes outlier benar - benar merupakan outlier (yaitu tidak boleh dalam data) bisa sangat rendah.
    Saya percaya bahwa pengetahuan para ahli tentang data yang ada biasanya jauh lebih baik dalam mendeteksi outlier daripada tes statistik: tes ini sama baiknya dengan asumsi di baliknya. Dan satu ukuran cocok untuk semua sering kali tidak terlalu baik untuk analisis data. Setidaknya saya sering berurusan dengan semacam pencilan, di mana para ahli (tentang jenis pengukuran) tidak memiliki masalah mengidentifikasi bagian yang tepat dari sinyal yang dikompromikan sementara prosedur otomatis sering gagal (mudah untuk membuat mereka mendeteksi bahwa ada masalah, tetapi sangat sulit untuk membuat mereka menemukan di mana masalah dimulai dan di mana itu berakhir).

cbeleites tidak senang dengan SX
sumber
Ada banyak informasi bagus di sini. Saya terutama menyukai poin-poin # 4 & 5.
gung - Reinstate Monica
4

Untuk pencilan univariat terdapat uji rasio Dixon dan uji Grubb dengan asumsi normalitas. Untuk menguji pencilan Anda harus mengasumsikan distribusi populasi karena Anda mencoba untuk menunjukkan bahwa nilai yang diamati adalah ekstrim atau tidak biasa yang berasal dari distribusi yang diasumsikan. Saya memiliki makalah di American Statistician pada tahun 1982 yang mungkin saya rujuk di sini sebelumnya yang menunjukkan bahwa uji rasio Dixon dapat digunakan dalam sampel kecil bahkan untuk beberapa distribusi yang tidak normal. Chernick, MR (1982) "Catatan tentang Robustness of Dixon Ratio dalam Sampel Kecil" American Statistician hal 140. Untuk pencilan multivariat dan pencilan dalam deret waktu, fungsi pengaruh untuk estimasi parameter adalah ukuran yang berguna untuk mendeteksi pencilan secara tidak resmi (saya tidak tahu tes formal dibangun untuk mereka meskipun tes semacam itu dimungkinkan)."Pencilan dalam Data Statistik" untuk perawatan terperinci dari metode deteksi pencilan.

Michael R. Chernick
sumber
3

Lihat http://www.waset.org/journals/waset/v36/v36-45.pdf , "Tentang Deteksi outlier dalam Regresi Nonlinier" [ sic ].

Abstrak

Deteksi pencilan sangat penting karena tanggung jawab mereka untuk menghasilkan masalah interpretatif besar dalam linier maupun dalam analisis regresi nonlinier. Banyak pekerjaan telah dilakukan pada identifikasi outlier dalam regresi linier, tetapi tidak pada regresi nonlinier. Dalam artikel ini kami mengusulkan beberapa teknik deteksi outlier untuk regresi nonlinier. Gagasan utamanya adalah menggunakan pendekatan linier dari model nonlinear dan mempertimbangkan gradien sebagai matriks desain. Selanjutnya, teknik deteksi dirumuskan. Enam langkah pendeteksian dikembangkan yang dikombinasikan dengan tiga teknik estimasi seperti Least-Squares, M dan MM-estimators. Studi ini menunjukkan bahwa di antara enam ukuran, hanya residu pelajar dan Jarak Cook yang dikombinasikan dengan estimator MM,

hosein
sumber
+1 Meskipun ada masalah yang jelas dengan bahasa Inggris (dan dalam penyusunan huruf matematika), makalah ini tampaknya menjadi kontribusi yang berguna untuk pertanyaan.
whuber
2

Pencilan adalah titik yang "terlalu jauh" dari "beberapa garis dasar". Caranya adalah dengan mendefinisikan kedua frasa tersebut! Dengan regresi nonlinier, orang tidak bisa hanya menggunakan metode univariat untuk melihat apakah pencilan "terlalu jauh" dari kurva paling cocok, karena pencilan dapat memiliki pengaruh besar pada kurva itu sendiri.

Ron Brown dan saya mengembangkan metode unik (yang kami sebut ROUT - Robust regression dan Outlier removal) untuk melakukan pendeteksian outlier dengan regresi nonlinear, tanpa membiarkan outlier mempengaruhi kurva terlalu banyak. Pertama-tama paskan data dengan metode regresi yang kuat di mana outlier memiliki sedikit pengaruh. Itu membentuk garis dasar. Kemudian gunakan ide-ide dari False Discovery Rate (FDR) untuk menentukan kapan suatu titik "terlalu jauh" dari garis dasar itu, dan begitu juga dengan outlier. Akhirnya, menghapus outlier yang diidentifikasi, dan sesuai dengan poin yang tersisa secara konvensional.

Metode ini diterbitkan dalam jurnal akses terbuka: Motulsky HJ dan Brown RE, Mendeteksi outlier ketika memasukkan data dengan regresi nonlinear - metode baru berdasarkan regresi nonlinear yang kuat dan tingkat penemuan palsu , BMC Bioinformatics 2006, 7: 123. Ini abstraknya:

Latar Belakang. Regresi nonlinear, seperti regresi linier, mengasumsikan bahwa sebaran data di sekitar kurva ideal mengikuti distribusi Gaussian atau normal. Asumsi ini mengarah pada tujuan umum dari regresi: untuk meminimalkan jumlah kuadrat jarak vertikal atau nilai-Y antara titik dan kurva. Pencilan dapat mendominasi perhitungan jumlah kotak, dan mengarah pada hasil yang menyesatkan. Namun, kami tahu tidak ada metode praktis untuk secara rutin mengidentifikasi pencilan ketika menyesuaikan kurva dengan regresi nonlinear.

Hasil. Kami menjelaskan metode baru untuk mengidentifikasi pencilan ketika memasukkan data dengan regresi nonlinier. Kami pertama-tama menyesuaikan data menggunakan bentuk regresi nonlinier yang kuat, berdasarkan pada asumsi bahwa pencar mengikuti distribusi Lorentzian. Kami menemukan metode adaptif baru yang secara bertahap menjadi lebih kuat ketika metode berlanjut. Untuk mendefinisikan pencilan, kami mengadaptasi pendekatan laju penemuan palsu untuk menangani beberapa perbandingan. Kami kemudian menghapus outlier, dan menganalisis data menggunakan regresi kuadrat-terkecil biasa. Karena metode ini menggabungkan regresi kuat dan penghapusan outlier, kami menyebutnya metode ROUT.

Saat menganalisis data yang disimulasikan, di mana semua sebaran adalah Gaussian, metode kami mendeteksi (secara salah) satu atau lebih pencilan hanya dalam sekitar 1-3% percobaan. Saat menganalisis data yang terkontaminasi dengan satu atau beberapa pencilan, metode ROUT berkinerja baik pada identifikasi pencilan, dengan rata-rata Angka Penemuan Palsu kurang dari 1%.

Kesimpulan. Metode kami, yang menggabungkan metode baru regresi nonlinier kuat dengan metode baru identifikasi outlier, mengidentifikasi outlier dari kurva nonlinear yang sesuai dengan daya yang masuk akal dan beberapa false positive.

Itu belum (sejauh yang saya tahu) diimplementasikan di R. Tapi kami menerapkannya di GraphPad Prism. dan memberikan penjelasan sederhana dalam bantuan Prism .

Harvey Motulsky
sumber
0

Pertanyaan Anda terlalu umum. Tidak ada metode tunggal terbaik untuk mengecualikan "outlier".

Anda harus mengetahui beberapa properti di "outlier". atau Anda tidak tahu metode mana yang terbaik. Setelah memutuskan metode mana yang ingin Anda gunakan, Anda perlu mengkalibrasi parameter metode dengan hati-hati.

ZYD
sumber