uji-t pada data yang sangat miring

18

Saya memiliki satu set data dengan puluhan ribu pengamatan data biaya medis. Data ini sangat condong ke kanan dan memiliki banyak nol. Sepertinya ini untuk dua set orang (dalam hal ini dua pita usia dengan masing-masing> 3000 obs):

 Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
 0.0      0.0      0.0   4536.0    302.6 395300.0 
Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
 0.0      0.0      0.0   4964.0    423.8 721700.0 

Jika saya melakukan uji-t Welch pada data ini saya mendapatkan hasil kembali:

Welch Two Sample t-test

data:  x and y
t = -0.4777, df = 3366.488, p-value = 0.6329
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -2185.896  1329.358
sample estimates:
mean of x mean of y 
 4536.186  4964.455 

Saya tahu tidak benar menggunakan uji-t pada data ini karena sangat tidak normal. Namun, jika saya menggunakan tes permutasi untuk perbedaan rata-rata, saya mendapatkan nilai-p hampir sama sepanjang waktu (dan semakin dekat dengan lebih banyak iterasi).

Menggunakan paket perm dalam R dan izin dengan Monte Carlo yang tepat

    Exact Permutation Test Estimated by Monte Carlo

data:  x and y
p-value = 0.6188
alternative hypothesis: true mean x - mean y is not equal to 0
sample estimates:
mean x - mean y 
      -428.2691 

p-value estimated from 500 Monte Carlo replications
99 percent confidence interval on p-value:
 0.5117552 0.7277040 

Mengapa statistik uji permutasi keluar sangat dekat dengan nilai t.test? Jika saya mengambil log data maka saya mendapatkan nilai p-test t.test 0,28 dan sama dari tes permutasi. Saya pikir nilai uji-t akan lebih banyak sampah daripada yang saya dapatkan di sini. Ini berlaku untuk banyak set data lain yang saya miliki seperti ini dan saya bertanya-tanya mengapa uji-t tampaknya berfungsi padahal seharusnya tidak.

Kekhawatiran saya di sini adalah bahwa biaya perorangan tidak iid. Ada banyak sub-kelompok orang dengan distribusi biaya yang sangat berbeda (wanita vs pria, kondisi kronis, dll.) Yang tampaknya merusak persyaratan iid untuk teorema limit pusat, atau haruskah saya tidak khawatir tentang itu?

Chris
sumber
Bagaimana bisa terjadi bahwa nilai minimum dan median data Anda adalah nol?
Alecos Papadopoulos
Lebih dari separuh nilainya nol, mengindikasikan separuh orang tidak memiliki perawatan medis tahun itu.
Chris
Dan mengapa Anda berpikir bahwa tes permutasi harus berbeda? (jika kedua kelompok memiliki distribusi yang tidak normal sama)
FairMiles
Perlu diingat bahwa iid adalah dua asumsi terpisah. Yang pertama adalah 'independen'. Yang kedua adalah 'terdistribusi secara identik'. Anda tampaknya menyarankan bahwa pengamatan tidak 'terdistribusi secara identik'. Ini seharusnya tidak mempengaruhi jawaban yang diberikan sejauh ini, karena kita masih dapat mengasumsikan bahwa semua pengamatan berasal dari satu campuran besar distribusi. Tetapi jika Anda berpikir bahwa pengamatan tidak independen, itu adalah masalah yang jauh berbeda dan berpotensi lebih sulit.
zkurtz

Jawaban:

29

Baik uji-t maupun uji permutasi tidak memiliki banyak kekuatan untuk mengidentifikasi perbedaan rata-rata antara dua distribusi yang sangat miring. Jadi mereka berdua memberikan nilai p anodyne yang menunjukkan tidak signifikan sama sekali. Masalahnya bukan bahwa mereka tampaknya setuju; itu karena mereka kesulitan mendeteksi perbedaan sama sekali, mereka tidak bisa tidak setuju!


Untuk intuisi tertentu, pertimbangkan apa yang akan terjadi jika perubahan dalam nilai tunggal terjadi dalam satu dataset. Misalkan maksimum 721.700 tidak terjadi pada kumpulan data kedua, misalnya. Rerata akan turun sekitar 721700/3000, yaitu sekitar 240. Namun perbedaan rata-rata hanya 4964-4536 = 438, bahkan tidak dua kali lebih besar. Itu menunjukkan (meskipun tidak membuktikan) bahwa setiap perbandingan sarana tidak akan menemukan perbedaan yang signifikan.

Namun, kami dapat memverifikasi bahwa uji-t tidak berlaku. Mari kita menghasilkan beberapa dataset dengan karakteristik statistik yang sama dengan ini. Untuk melakukannya saya telah membuat campuran di mana

  • 5/8
  • Data yang tersisa memiliki distribusi lognormal.
  • Parameter distribusi itu disusun untuk mereproduksi rata-rata yang diamati dan kuartil ketiga.

Ternyata dalam simulasi ini bahwa nilai maksimum tidak jauh dari maxima yang dilaporkan, baik.

Mari kita ulangi dataset pertama 10.000 kali dan lacak meannya. (Hasilnya akan hampir sama ketika kita melakukan ini untuk dataset kedua.) Histogram ini berarti memperkirakan distribusi sampling dari rata-rata. Uji-t valid ketika distribusi ini mendekati Normal; sejauh mana ia menyimpang dari Normalitas menunjukkan sejauh mana distribusi siswa akan keliru. Jadi, untuk referensi, saya juga telah menggambar (dalam warna merah) PDF dari distribusi Normal yang sesuai dengan hasil ini.

Histogram 1

Kami tidak dapat melihat banyak detail karena ada beberapa outlier besar kekalahan. (Itu adalah manifestasi dari sensitivitas cara yang saya sebutkan ini.) Ada 123 di antaranya - 1,23% - di atas 10.000. Mari kita fokus pada yang lain sehingga kita dapat melihat detailnya dan karena outlier ini dapat dihasilkan dari asumsi lognormalitas distribusi, yang tidak harus menjadi kasus untuk dataset asli.

Histogram 2

(3000/428)2=50


Berikut adalah Rkode yang menghasilkan angka-angka ini.

#
# Generate positive random values with a median of 0, given Q3,
# and given mean. Make a proportion 1-e of them true zeros.
#
rskew <- function(n, x.mean, x.q3, e=3/8) {
  beta <- qnorm(1 - (1/4)/e)
  gamma <- 2*(log(x.q3) - log(x.mean/e))
  sigma <- sqrt(beta^2 - gamma) + beta
  mu <- log(x.mean/e) - sigma^2/2
  m <- floor(n * e)
  c(exp(rnorm(m, mu, sigma)), rep(0, n-m))
}
#
# See how closely the summary statistics are reproduced.
# (The quartiles will be close; the maxima not too far off;
# the means may differ a lot, though.)
#
set.seed(23)
x <- rskew(3300, 4536, 302.6)
y <- rskew(3400, 4964, 423.8)
summary(x)
summary(y)
#
# Estimate the sampling distribution of the mean.
#
set.seed(17)
sim.x <- replicate(10^4, mean(rskew(3367, 4536, 302.6)))
hist(sim.x, freq=FALSE, ylim=c(0, dnorm(0, sd=sd(sim.x))))
curve(dnorm(x, mean(sim.x), sd(sim.x)), add=TRUE, col="Red")
hist(sim.x[sim.x < 10000], xlab="x", freq=FALSE)
curve(dnorm(x, mean(sim.x), sd(sim.x)), add=TRUE, col="Red")
#
# Can a t-test detect a difference with more data?
#
set.seed(23)
n.factor <- 50
z <- replicate(10^3, {
  x <- rskew(3300*n.factor, 4536, 302.6)
  y <- rskew(3400*n.factor, 4964, 423.8)
  t.test(x,y)$p.value
})
hist(z)
mean(z < .05) # The estimated power at a 5% significance level
whuber
sumber
1
Untuk contoh dataset yang sangat miring di mana t-test namun adalah berlaku (karena jumlah besar data), silakan lihat stats.stackexchange.com/questions/110418/... . Kedua kasus ini bersama-sama menunjukkan tidak ada jawaban yang terpotong-potong untuk pertanyaan: Anda harus mempertimbangkan distribusi data dan jumlah data saat memutuskan apakah uji-t akan bermakna dan akurat.
whuber
3
Saya telah mengajukan pertanyaan ini dengan harapan dapat menemukannya lagi ketika berhadapan dengan orang-orang yang berpikir bahwa n = 30 atau n = 300 sudah cukup untuk terus maju dan menganggap sampel rata-rata terdistribusi secara normal (dan seterusnya). Saya punya contoh-contoh simulasi yang bagus tapi bagus untuk menunjukkan ini adalah masalah dengan data nyata juga.
Glen_b -Reinstate Monica
1
+1, tapi saya ingin tahu seperti apa rekomendasi praktis Anda dalam situasi seperti itu. Haruskah seseorang mencoba menggunakan tes permutasi berdasarkan beberapa statistik lain, bukan rata-rata (mungkin beberapa kuantil tinggi)? Haruskah seseorang mencoba menerapkan beberapa transformasi sebelum menjalankan tes standar pada sarana? Atau haruskah seseorang lebih baik melepaskan harapan untuk mendeteksi perbedaan yang signifikan antara dua sampel?
Amuba mengatakan Reinstate Monica
@amoeba Jika masalah adalah menguji perbedaan dalam mean, maka tes permutasi tidak akan membantu: Anda tidak akan menemukan perbedaan yang signifikan di sini. Jika Anda menguji beberapa statistik lain, maka Anda tidak menguji mean (yang sangat relevan untuk data biaya!), Jadi apakah itu dapat direkomendasikan tergantung pada tujuannya.
whuber
4

Ketika n besar (seperti 300, bahkan jauh lebih sedikit dari 3000), uji-t pada dasarnya sama dengan uji-z. Artinya, uji-t menjadi tidak lebih dari penerapan teorema batas pusat, yang mengatakan bahwa MEAN untuk masing-masing dari dua kelompok Anda terdistribusi secara normal (bahkan jika pengamatan yang mendasari kedua cara tersebut sangat jauh dari normal). didistribusikan!). Ini juga alasan bahwa tabel-t khas Anda tidak repot-repot menunjukkan nilai untuk n lebih dari 1000 (misalnya, tabel-t ini) . Jadi, saya tidak terkejut melihat bahwa Anda mendapatkan hasil yang baik.

Sunting: Saya tampaknya telah meremehkan ekstremitas kemiringan dan pentingnya. Sementara poin saya di atas memiliki kelebihan dalam keadaan yang kurang ekstrim, jawaban whuber untuk pertanyaan secara keseluruhan jauh lebih baik.

zkurtz
sumber
2
Ketika kemiringan ekstrem - seperti yang ditunjukkan oleh statistik yang dikutip - kami tidak memiliki kepastian bahwa distribusi sampling rata-rata 300 atau bahkan 3000 sampel akan mendekati Normal. Itu sebabnya OP terkejut. Anda membantahnya dengan mengatakan bahwa Anda tidak terkejut, tetapi itu tampaknya berasal dari intuisi seseorang dibandingkan dengan intuisi orang lain. Argumen objektif apa yang dapat Anda berikan untuk data ini yang menunjukkan bahwa 300 (atau 3000) adalah sampel yang cukup besar untuk uji-t bekerja dengan baik?
whuber
Poin yang bagus. Saya akui, jika datanya cukup miring, argumen saya gagal. Jadi pertanyaannya kepada saya adalah, seberapa tepatnya data tersebut miring, dan apakah ada hasil resmi di luar sana yang menghubungkan kemiringan dengan ukuran sampel yang diperlukan.
zkurtz
1
Saya telah mengirim jawaban untuk pertanyaan itu. Kita tahu (setidaknya kira-kira) seberapa miringnya data berdasarkan pada ringkasan statistik dalam pertanyaan. Kecenderungan itu begitu kuat sehingga baik 300, atau 3000, atau bahkan 30.000 pengamatan per kelompok tidak akan membuat distribusi sampling dari rata-rata "hampir persis normal." Anda mungkin membutuhkan sekitar 300.000 atau lebih sebelum klaim itu masuk akal. Oleh karena itu kita harus mencari penjelasan yang berbeda mengapa kedua tes tersebut setuju. Milik saya adalah bahwa tidak ada yang "berperilaku baik" daripada keduanya berperilaku baik.
whuber
0

Saya tahu jawaban ini sangat terlambat. Namun, saya mendapatkan gelar PhD dalam penelitian layanan kesehatan, jadi saya sering bekerja dengan data layanan kesehatan, termasuk data biaya.

Saya tidak tahu data apa yang dimiliki OP. Jika data cross-sectional, maka kemungkinan itu adalah IID. Kemandirian berarti bahwa setiap unit, sehingga setiap orang, adalah independen. Itu sangat mungkin dibenarkan. Untuk terdistribusi secara identik, data dapat dimodelkan karena semuanya berasal dari, katakanlah, distribusi gamma dalam model linier umum dengan tautan log. Inilah yang biasa dilakukan orang dalam praktik. Atau jika Anda ingin menjadi mewah, mungkin ada model rintangan (populer di bidang ekonometrik) yang menangani kelebihan 0s. Ngomong-ngomong, cukup umum dalam pengeluaran perawatan kesehatan. OP secara teknis benar bahwa data tidak selalu terdistribusi secara identik, misalnya mean dan varians akan berubah seiring bertambahnya usia, tetapi itu adalah asumsi yang bisa diterapkan dalam model regresi berganda.

Jika setiap orang berada dalam dataset selama lebih dari satu tahun, maka data tidak akan menjadi IID. Ada model yang lebih kompleks yang tersedia untuk itu. Yang relatif sederhana dari mereka mungkin akan digeneralisasikan memperkirakan persamaan, distribusi gamma dan tautan log lagi, mengasumsikan korelasi kerja yang dapat ditukar. Atau, jika data ini berasal dari data survei yang tersedia untuk umum, TIDAK ada probabilitas yang sama untuk dijadikan sampel - banyak dari survei itu mewawancarai banyak orang di setiap rumah tangga, dan mereka juga mengelompokkan populasi dan melakukan oversample pada beberapa kelompok (misalnya ras minoritas). Pengguna harus memperbaikinya.

Saya tidak menggunakan uji-t, terutama untuk data observasi. Ada terlalu banyak perancu, jadi Anda ingin menyesuaikan untuk mereka dalam model linier (umum). Jadi, saya tidak bisa mengomentari pertanyaan terkait khusus untuk uji-t.

Weiwen Ng
sumber