Keterampilan apa yang dibutuhkan untuk melakukan analisis statistik skala besar?

107

Banyak pekerjaan statistik meminta pengalaman dengan data skala besar. Apa saja jenis keterampilan statistik dan komputasi yang akan diperlukan untuk bekerja dengan kumpulan data besar. Misalnya, bagaimana dengan membangun model regresi yang diberikan kumpulan data dengan 10 juta sampel?

pertanyaan kecil
sumber
1
Beberapa petunjuk bagus di sini .
radek
Akan sangat membantu jika Anda meringkas yang menurut Anda terbaik.
rolando2
Yang juga menarik adalah diskusi terkait pengujian hipotesis dengan set besar data: stats.stackexchange.com/q/2516/919
whuber

Jawaban:

115

Jawaban yang bagus sudah muncul. Karena itu saya hanya akan membagikan beberapa pemikiran berdasarkan pengalaman pribadi: sesuaikan yang relevan dengan situasi Anda sendiri sesuai kebutuhan.

Untuk latar belakang dan konteks--sehingga Anda dapat menjelaskan bias pribadi apa pun yang mungkin merayapi pesan ini - sebagian besar pekerjaan saya adalah membantu orang membuat keputusan penting berdasarkan kumpulan data yang relatif kecil. Mereka kecil karena datanya bisa mahal untuk dikumpulkan (10K dolar untuk sampel pertama dari sumur pemantauan air tanah, misalnya, atau beberapa ribu dolar untuk analisis bahan kimia yang tidak biasa). Saya terbiasa mendapatkan sebanyak mungkin dari data apa pun yang tersedia, menjelajahinya hingga mati, dan menemukan metode baru untuk menganalisisnya jika perlu. Namun, dalam beberapa tahun terakhir saya telah bertunangan untuk bekerja pada beberapa database yang cukup besar, seperti salah satu data sosial ekonomi dan teknik yang mencakup seluruh AS pada tingkat blok Sensus (8,5 juta catatan,

Dengan dataset yang sangat besar, seluruh pendekatan dan perubahan pola pikir seseorang . Sekarang ada terlalu banyak data untuk dianalisis. Beberapa implikasi langsung (dan, dalam retrospeksi) yang jelas (dengan penekanan pada pemodelan regresi) termasuk

  • Analisis apa pun yang Anda pikirkan untuk dilakukan dapat mengambil banyak waktu dan perhitungan. Anda perlu mengembangkan metode subsampling dan bekerja pada dataset parsial sehingga Anda dapat merencanakan alur kerja Anda saat menghitung dengan seluruh dataset. (Subsampling dapat menjadi rumit, karena Anda memerlukan subkumpulan data yang representatif yang sama kayanya dengan seluruh dataset. Dan jangan lupa tentang memvalidasi silang model Anda dengan data yang diulurkan.)

    • Karena itu, Anda akan menghabiskan lebih banyak waktu untuk mendokumentasikan apa yang Anda lakukan dan menulis semuanya (sehingga bisa diulang).

    • Seperti @dsimcha baru saja mencatat, keterampilan pemrograman yang baik berguna. Sebenarnya, Anda tidak perlu banyak cara dalam pengalaman dengan lingkungan pemrograman, tetapi Anda membutuhkan kemauan untuk memprogram, kemampuan untuk mengenali kapan pemrograman akan membantu (pada hampir setiap langkah, sungguh) dan pemahaman yang baik tentang elemen dasar dari ilmu komputer, seperti desain struktur data yang sesuai dan bagaimana menganalisis kompleksitas algoritma komputasi. Itu berguna untuk mengetahui terlebih dahulu apakah kode yang Anda rencanakan untuk ditulis akan ditingkatkan ke dataset lengkap.

    • Beberapa dataset berukuran besar karena mereka memiliki banyak variabel (ribuan atau puluhan ribu, semuanya berbeda). Berharap untuk menghabiskan banyak waktu hanya meringkas dan memahami data . Sebuah codebook atau kamus data , dan bentuk lain dari metadata , menjadi penting.

  • Sebagian besar waktu Anda dihabiskan hanya untuk memindahkan data dan memformatnya kembali. Anda memerlukan keterampilan dengan memproses basis data dan keterampilan besar dengan merangkum dan membuat grafik sejumlah besar data. ( Multiple Small Tufte datang ke permukaan di sini.)

  • Beberapa alat perangkat lunak favorit Anda akan gagal. Lupakan spreadsheet, misalnya. Banyak sumber terbuka dan perangkat lunak akademis tidak akan cukup untuk menangani kumpulan data besar: pemrosesan akan berlangsung selamanya atau perangkat lunak akan macet. Harapkan ini dan pastikan Anda memiliki banyak cara untuk menyelesaikan tugas-tugas utama Anda.

  • Hampir semua uji statistik yang Anda jalankan akan sangat kuat sehingga hampir pasti untuk mengidentifikasi efek "signifikan". Anda harus lebih fokus pada kepentingan statistik , seperti ukuran efek, daripada signifikansi.

  • Demikian pula, pemilihan model merepotkan karena hampir semua variabel dan interaksi apa pun yang Anda renungkan akan terlihat signifikan. Anda harus lebih fokus pada kebermaknaan variabel yang Anda pilih untuk dianalisis.

  • Akan ada lebih dari cukup informasi untuk mengidentifikasi transformasi variabel nonlinier yang sesuai . Ketahui cara melakukan ini.

  • Anda akan memiliki cukup data untuk mendeteksi hubungan nonlinier, perubahan tren, nonstasioneritas, heteroskedastisitas , dll.

  • Anda tidak akan pernah selesai . Ada begitu banyak data yang dapat Anda pelajari selamanya. Karena itu, penting untuk menetapkan tujuan analitis Anda sejak awal dan selalu mengingatnya.

Saya akan mengakhiri dengan anekdot singkat yang menggambarkan satu perbedaan tak terduga antara pemodelan regresi dengan dataset besar dibandingkan dengan yang lebih kecil. Pada akhir proyek dengan data Sensus, model regresi yang saya kembangkan perlu diimplementasikan dalam sistem komputasi klien, yang berarti menulis kode SQL dalam database relasional. Ini adalah langkah rutin tetapi kode yang dihasilkan oleh pemrogram basis data melibatkan ribuan baris SQL. Ini membuatnya hampir tidak mungkin untuk menjamin itu bebas bug - meskipun kami dapat mendeteksi bug (itu memberikan hasil yang berbeda pada data uji), menemukan mereka adalah masalah lain. (Yang Anda butuhkan adalah satu kesalahan tipografi dalam koefisien ...) Bagian dari solusinya adalah menulis program yang menghasilkan perintah SQL langsung dari perkiraan model. Ini meyakinkan bahwa apa yang keluar dari paket statistik adalah persis apa yang masuk ke RDBMS. Sebagai bonus, beberapa jam dihabiskan untuk menulis skrip ini mungkin menggantikan beberapa minggu pengujian dan pengkodean SQL. Ini adalah sebagian kecil dari apa artinya bagi ahli statistik untuk dapat mengkomunikasikan hasil mereka.

whuber
sumber
3
+1, saya akan membagikan tanggapan yang luar biasa ini (dan mencetaknya untuk
didekatkan
1
+1, ini adalah apa yang saya pasti akan menceritakan kembali siswa saya bertahun-tahun yang akan datang.
mpiktas
2
anekdot mengingatkan saya saat saya harus mentransfer model dari Eviews ke R. Model asli dilakukan di Eviews, hasilnya sekitar 20 persamaan. Saya harus mempresentasikan hasilnya di halaman web dengan antarmuka interaktif. Karena model ini sedang dalam proses, saya menulis kode yang menerjemahkan output dari Eviews ke kode R dengan tujuan yang sama dengan model yang tepat digunakan di Eviews dan di R. R bekerja dengan sangat baik, saya bahkan akhirnya menggunakan perbedaan dalam menerjemahkan kode yang diterjemahkan. untuk perhitungan gradien analitik.
mpiktas
2
Secara umum dianggap lebih konstruktif (jika bukan kesopanan sederhana) ketika downvotes dibenarkan dalam komentar, kecuali ada alasan yang jelas untuk tidak melakukannya (misalnya, respons samar satu-baris, tidak ada respons untuk meminta pembaruan jawaban yang salah, perilaku ofensif). Ini berkontribusi untuk meningkatkan kualitas respons, ketika argumen yang valid dibuat. Dalam kasus khusus ini, saya tidak melihat alasan untuk downvote!
chl
2
+1 untuk otomatisasi mengurangi kesalahan: " tulis program yang menghasilkan perintah SQL langsung dari perkiraan model ".
Orion
18

Pertanyaan Anda harus menghasilkan beberapa jawaban yang bagus. Inilah beberapa poin awal.

  1. Kemampuan untuk bekerja dengan timbal balik antara presisi dan tuntutan yang ditempatkan pada daya komputasi.

  2. Fasilitas dengan teknik penambangan data yang dapat digunakan sebagai alat skrining awal sebelum melakukan regresi. Misalnya, chaid, cart, atau jaringan saraf.

  3. Pemahaman yang mendalam tentang hubungan antara signifikansi statistik dan signifikansi praktis. Daftar metode yang luas untuk pemilihan variabel.

  4. Naluri melakukan crossvalidate.

rolando2
sumber
Saya juga akan menggabungkan # 4 dan # 1: penting untuk mengetahui cara memvalidasi silang tanpa membebani sumber daya komputasi Anda.
Zach
1
Bisakah Anda menjelaskan poin ke-2 Anda? Bagaimana Anda menggunakan CHAID / CART / neural networks sebagai alat skrining untuk regresi?
raegtin
2
@raegtin - Saya paling akrab dengan CHAID, yang muncul dengan apa yang disebut "interaksi" yang seringkali merupakan efek utama yang disamarkan sebagai interaksi karena itulah satu-satunya cara prosedur akan "membiarkan mereka masuk." (Dalam CHAID hanya ada 1 efek utama yang diidentifikasi seperti itu, sehingga semua efek utama lainnya masuk ke dalam sel "interaksi".) Tetapi CHAID memiliki keuntungan karena dapat memeriksa banyak banyak interaksi. Jadi, begitu beberapa yang menjanjikan diidentifikasi, mereka dapat dimasukkan ke dalam regresi atau anova, dengan semua komponen tingkat rendahnya, dan seseorang dapat menguji mana yang benar-benar berguna.
rolando2
1
+1 Saya tertarik dengan kemungkinan menggunakan data mining (terutama CHAID) untuk mengeksplorasi efek potensial. Akan menarik untuk melihat aplikasi, seperti dengan dataset buatan (dan kecil) di stats.stackexchange.com/q/10363/919
whuber
12

Keterampilan pemrograman yang baik adalah suatu keharusan. Anda harus dapat menulis kode efisien yang dapat menangani data dalam jumlah besar tanpa tersedak, dan mungkin dapat memparalelkan kode tersebut agar dapat berjalan dalam jumlah waktu yang wajar.

dsimcha
sumber
4
Pengkodean adalah suatu keharusan, tetapi juga mengetahui cara bekerja dengan OS tidak bertentangan dengan itu adalah penting. Anda harus memahami bahwa kadang-kadang membagi pekerjaan memiliki biaya tambahan yang terkait dengannya, karena mengakses disk dan jaringan membawa biaya tambahan. Anda harus memahami berbagai cara memblokir dan menunggu serta melakukan komunikasi antar proses. Saya telah melihat kode ilmiah hebat yang akan menghabiskan sebagian besar waktunya menunggu beberapa panggilan sistem selesai. Berteman dengan sysadmin sistem Anda, Anda bisa mendapatkan banyak bantuan dengan optimalisasi sistem Anda dengan membawakan mereka kopi;)
Marcin
2
Terkadang lebih baik menulis "Kode tidak efisien" jika ini akan membantu dalam menciptakan struktur data yang mengantisipasi pertanyaan tambahan di jalan yang mungkin akan ditanyakan.
Ralph Winters
1
@Ralph: +1, saya benar-benar setuju dan mempelajari hal ini dengan susah payah sendiri. Saya tidak bermaksud menerapkan bahwa Anda harus selalu menulis kode efisien apa pun komprominya, hanya saja Anda harus tahu caranya.
dsimcha
5

Saya juga akan menambahkan bahwa data skala besar juga memperkenalkan masalah potensi "data buruk". Tidak hanya data yang hilang, tetapi kesalahan data dan definisi yang tidak konsisten diperkenalkan oleh setiap bagian dari sistem yang pernah menyentuh data. Jadi, sebagai tambahan keterampilan statistik, Anda harus menjadi pembersih data ahli, kecuali jika orang lain melakukannya untuk Anda.

-Ralph Winters

Ralph Winters
sumber
3
Ini adalah poin yang bagus. Pencilan dan masalah data lainnya mengganggu setiap dataset, tidak peduli seberapa besar atau kecilnya data. Dalam pengalaman saya, mereka sebenarnya lebih mudah untuk diidentifikasi dan ditangani dalam dataset besar, karena Anda memiliki kekuatan untuk membedakan mereka dari massa data dan, terutama jika Anda menggunakan metode yang kuat, mereka cenderung mempengaruhi hasil. BTW, Anda selalu melakukan "pembersihan data" sepanjang analisis apa pun. Ini bukan sesuatu yang dapat dipisahkan dan dirujuk ke spesialis untuk ditangani sekali dan untuk semua. Pencilan hanyalah pencilan dalam konteks model tertentu.
whuber
2
Lihat google refine sebagai pembersih data semi otomatis yang membantu menghindari jebakan pengeditan tangan.
mindless.panda
5
  1. Membingkai masalah dalam kerangka kerja pengurangan Peta .
  2. Sisi Teknik dari masalah, mis., Seberapa sakit menggunakan presisi yang lebih rendah untuk parameter, atau pemilihan model yang tidak hanya didasarkan pada generalisasi tetapi juga biaya penyimpanan dan perhitungan.
highBandWidth
sumber
Bisakah Anda memberikan tautan yang relevan untuk kerangka kerja pengurangan Peta yang Anda sebutkan?
mindless.panda
@ sugar.panda, tautan wiki ditambahkan!
highBandWidth
+1 untuk menyebutkan tentang presisi yang lebih rendah, meskipun itu jauh dari menjadi hak prerogatif insinyur. Semakin rendah presisi, semakin besar kemungkinan kita untuk membuat keputusan yang buruk. Ini terkait erat dengan kesalahan Tipe I / II dan mencakup beberapa disiplin ilmu tetapi sebagian besar relevan dengan statistik, ilmu keputusan dan ekonomi. Fungsi utilitas harus dipikirkan sebelumnya dan bagian dari proses pemikiran untuk mengidentifikasi metodologi yang sesuai.
Thomas Speidel