Bagaimana membuktikan secara statistik jika suatu kolom memiliki data kategorikal atau tidak menggunakan Python

10

Saya memiliki bingkai data dalam python di mana saya perlu menemukan semua variabel kategori. Memeriksa jenis kolom tidak selalu berhasil karena intjenisnya juga bisa kategoris.

Jadi saya mencari bantuan dalam menemukan metode pengujian hipotesis yang tepat untuk mengidentifikasi apakah suatu kolom termasuk kategori atau tidak.

Saya mencoba di bawah uji chi-square tetapi saya tidak yakin apakah ini cukup baik

import numpy as np
data = np.random.randint(0,5,100)
import scipy.stats as ss
ss.chisquare(data)

Mohon saran.

Amit
sumber
1
Bisakah Anda mengklarifikasi jika saya mengerti dengan benar bahwa Anda ingin membedakan antara int digunakan sebagai variabel ordinal dan digunakan sebagai pengkodean kategori sewenang-wenang? Saya tidak punya jawaban, tetapi mungkin membantu orang lain membaca dengan jelas apa yang Anda inginkan. Secara intuitif saya tidak berpikir Chi2 dapat melakukan pekerjaan dengan andal.
ReneBt
Ya kamu benar. Kecuali fokus saya bukan pada jenis variabel melainkan data yang dibawanya. Jadi dalam contoh kode yang saya bagikan hasilnya harus berupa variabel kategori karena hanya memiliki 5 nilai unik.
Amit
1
Di mana aturannya "hasilnya harus berupa variabel kategori karena hanya memiliki 5 nilai unik." berasal dari?
Dennis Soemers
Oh, itu bukan aturan, Secara intuitif saya tahu bahwa semua data kolom saya hanya 5 nilai ini.
Amit
Meskipun orang lain dengan tepat menunjukkan bahwa itu tidak dapat dilakukan, namun ini akan membuat masalah pembelajaran mesin yang menarik. Tidak diragukan lagi ada domain masalah di mana prediksi yang cukup akurat dapat dibuat.
John Coleman

Jawaban:

34

Jawaban singkat: Anda tidak bisa.

Tidak ada tes statistik yang akan memberi tahu Anda apakah prediktor yang berisi bilangan bulat antara 1 dan 10 adalah prediktor numerik (mis., Jumlah anak) atau menyandikan sepuluh kategori yang berbeda. (Jika prediktor berisi angka negatif, atau angka terkecil lebih besar dari satu, atau melompati bilangan bulat, ini mungkin membantah bahwa itu adalah pengkodean kategorikal - atau mungkin hanya berarti bahwa analis menggunakan pengkodean tidak standar.)

Satu-satunya cara untuk memastikan adalah memanfaatkan keahlian domain, atau buku catatan dataset (yang harus selalu ada).

Stephan Kolassa
sumber
14
"codebook dataset (yang harus selalu ada)" - Ha, bagus.
Kodiologist
12

Apa pun kriteria - atau aturan praktis - berfungsi untuk dataset Anda, silakan, tetapi kami tidak dapat melihat data Anda. Dalam hal apapun masalahnya lebih baik bernada umum, dan tanpa referensi ke perangkat lunak tertentu juga.

Ini lebih buruk daripada yang Anda pikirkan, bahkan jika Anda berpikir itu lebih buruk daripada yang Anda pikirkan.

  1. @Stephan Kolassa sudah membuat satu poin kunci. Bilangan bulat kecil bisa berarti jumlah daripada kategori: 3, artinya 3 mobil atau kucing, tidak sama dengan 3, yang berarti "orang memiliki mobil" atau "orang dimiliki oleh kucing".

  2. Poin desimal dapat bersembunyi di dalam variabel kategori, sebagai bagian dari klasifikasi kode, misalnya industri atau penyakit.

  3. Pengukuran rasa yang ketat bisa saja berupa bilangan bulat dengan konvensi, misalnya ketinggian orang bisa saja dilaporkan sebagai bilangan bulat cm atau inci, tekanan darah sebagai bilangan bulat mm Hg.

  4. Jumlah nilai yang berbeda (istilah yang lebih baik daripada "unik", yang masih memiliki makna utama terjadi sekali saja) juga bukan panduan yang baik. Jumlah ketinggian orang yang berbeda yang mungkin dalam sampel moderat mungkin jauh lebih sedikit daripada jumlah afiliasi agama atau asal etnis yang berbeda.

Nick Cox
sumber
+1. Ini adalah daftar hal-hal yang baik untuk dipertimbangkan. Anda harus menggabungkan ini dengan pengetahuan domain Anda tentang dataset (dan dokumentasi apa pun) untuk mengotomatiskan deteksi variabel kategori.
Anna
@ Anna Saya akan mengatakan bahwa deteksi otomatis tidak boleh dilakukan dan itulah yang dapat membuat Anda kesulitan seperti yang dijelaskan di utas ini. Pengetahuan dan dokumentasi domain harus siap mengidentifikasi variabel-variabel politis dari antara variabel-variabel lain, sehingga Anda tidak perlu menebak.
prince_of_pears
7

Yah saya pikir itu bahkan lebih buruk daripada jawaban yang disarankan: data tidak sub- kategori kategorik atau numerik æternatis - "tingkat pengukuran" adalah sesuatu yang ditetapkan oleh analis untuk menjawab pertanyaan tertentu pada kesempatan tertentu. Lihat jawaban Glen_b di sini .

Sangat penting untuk memahami hal itu secara praktis. Misalnya, dengan pohon klasifikasi perbedaan antara rasio, interval, & prediktor tingkat ordinal tidak ada konsekuensinya: satu-satunya perbedaan yang penting adalah antara prediktor ordinal & nominal. Membatasi algoritme untuk membagi prediktor pada titik di sepanjang garis, memisahkan yang lebih tinggi dari nilai yang lebih rendah, dapat memiliki efek signifikan pada kinerja prediktifnya - baik atau buruk, tergantung pada kelancaran hubungan prediktor (menurut dugaan) terkait dengan respons. & ukuran kumpulan data. Tidak ada cara yang masuk akal untuk membuat keputusan hanya berdasarkan pada pemikiran tentang bagaimana variabel prediktor mewakili kenyataan terlepas dari analisis yang akan Anda lakukan, apalagi pada nilai-nilai apa yang Anda temukan dalam sampel.

Scortchi - Reinstate Monica
sumber
0

Ini adalah pertanyaan penelitian terbuka. Lihat misalnya karya Valera et al. ( kertas ) atau ekstensi (mis. satu oleh Dhir et al. - kertas ).

Edit:

Praktik umum dalam statistik dan pembelajaran mesin adalah mengasumsikan bahwa tipe data statistik (misalnya, ordinal, kategoris atau bernilai nyata) dari variabel, dan biasanya, juga model kemungkinan diketahui. Namun, ketika ketersediaan data dunia nyata meningkat, asumsi ini menjadi terlalu ketat. Data seringkali heterogen, kompleks, dan tidak terdokumentasi secara lengkap atau tidak lengkap. Anehnya, meskipun penting secara praktis, masih ada kekurangan alat untuk secara otomatis menemukan tipe statistik, serta kemungkinan model (noise) yang sesuai untuk, variabel dalam dataset.

(Dari kertas Valera.)

Jadi ketika kita mengatakan bahwa ini adalah "pertanyaan terbuka" (anehnya mengutip diri saya sendiri), kami bermaksud mengatakan bahwa saat ini tidak ada metode otomatis yang baik untuk menyimpulkan jenis data yang diberikan sampel terbatas. Jika Anda memiliki sampel tanpa batas, ini akan mudah, tetapi karena itu tidak mungkin, kami perlu kembali ke cara lain.

Astrid
sumber
Bisakah Anda memberi tahu kami apa yang Anda maksudkan dengan "pertanyaan penelitian terbuka"? Harap pertimbangkan juga untuk menjelaskan bagaimana jawaban Anda tidak (atau tidak!) Bertentangan dengan jawaban lain di utas ini.
Whuber
Tentu, izinkan saya mengedit jawaban saya.
Astrid
Terima kasih. Tampak bagi saya, setelah membaca makalah Valera, bahwa ia membuat klaim yang jauh lebih kuat: yaitu, ia memang bermaksud memiliki metode untuk menebak jenis-jenis variabel, dan khususnya untuk membedakan antara data kategoris dan data ordinal. Saya tidak mempelajari metode ini, tetapi anggap itu harus didasarkan (setidaknya sebagian) dalam melihat hubungan antara variabel tersebut dan variabel lain yang mereka anggap terkait. Saya tidak dapat memahami bagaimana "sampel tak terbatas" (apa pun itu) dapat digunakan tambahan: dapatkah Anda menjelaskan bagaimana hal itu membuat masalah "mudah"?
Whuber
Ini sebenarnya adalah metode yang sangat kuat, dan saya sendiri telah mempelajarinya secara rinci (yang membuat saya agak bias terhadap Anda); tapi idenya sangat pintar. Kami menganggap bahwa setiap jenis kolom dapat digambarkan sebagai campuran jenis (sangat mirip dengan model campuran) dan kemudian kami berusaha menemukan jenis dengan bobot tertinggi dan kemudian menyebut koresponden 'jenis' jenis nyata dari variabel. Sejauh jenis inferensi berjalan, itu sangat pintar, dan metode otomatis terbaik (yang saya tahu). Jika orang lain tahu orang lain, silakan berbagi!
Astrid