Menghitung nilai-p dari distribusi sewenang-wenang


14

Saya harap ini bukan pertanyaan konyol. Katakanlah saya memiliki beberapa distribusi berkelanjutan yang sewenang-wenang. Saya juga memiliki statistik, dan saya ingin menggunakan distribusi sewenang-wenang ini untuk mendapatkan nilai p untuk statistik ini.

Saya menyadari bahwa di R mudah untuk melakukan ini selama distribusi Anda sesuai dengan salah satu yang ada di dalamnya, seperti jika itu normal. Tetapi apakah ada cara mudah untuk melakukan ini dengan distribusi yang diberikan, tanpa membuat asumsi semacam itu?

Jawaban:


12

Jika Anda memiliki fungsi distribusi kumulatif , maka menghitung nilai p untuk statistik T yang diberikan hanya 1 - F ( T ) . Ini mudah di R. Jika Anda memiliki fungsi kepadatan probabilitas di sisi lain, maka F ( x ) = x - p ( t ) d t . Anda dapat menemukan ini tidak terpisahkan secara analitik atau numerik. Dalam R ini akan terlihat seperti ini:FpT1F(T)F(x)=xp(t)dt

dF <- function(x)dnorm(x)
pF <- function(q)integrate(dF,-Inf,q)$value 

> pF(1)
[1] 0.8413448
> pnorm(1)
[1] 0.8413447

Anda dapat menyetel integrateuntuk akurasi yang lebih baik. Ini tentu saja mungkin gagal untuk kasus-kasus tertentu, ketika integral tidak berperilaku baik, tetapi harus berfungsi untuk sebagian besar fungsi kepadatan.

Anda tentu saja dapat meneruskan parameter ke pF, jika Anda memiliki beberapa nilai parameter untuk dicoba dan tidak ingin mendefinisikan ulang dFsetiap kali.

dF <- function(x,mean=0,sd=1)dnorm(x,mean=mean,sd=sd)
pF <- function(q,mean=0,sd=1)integrate(dF,-Inf,q,mean=mean,sd=sd)$value 

> pF(1,1,1)
[1] 0.5
> pnorm(1,1,1)
[1] 0.5

Tentu saja Anda juga dapat menggunakan metode Monte-Carlo seperti yang dijelaskan oleh @suncoolsu, ini akan menjadi metode numerik lain untuk integrasi.


Saya pikir metode Anda jauh lebih mudah daripada apa yang saya sarankan, terutama jika tidak ada batasan pada fungsi yang Anda integrasikan. Saya tidak mengetahui teknologi numerik. dalam R.
suncoolsu

Ya, saya pikir ini lebih sesuai dengan kemampuan saya saat ini. Terima kasih!
Alan H.

Sebenarnya, saya tidak yakin saya cukup mengikuti bagaimana fungsi ini bekerja. Contoh-contoh memberikan hasil untuk distribusi normal, tetapi di mana saya pasang fungsi kepadatan probabilitas saya?
Alan H.

(Saya sudah melakukan tes, dan data saya sepertinya tidak jauh dari normal.)
Alan H.

@Lan H., tancapkan fungsi kerapatan Anda ke dF. Itu dFharus mengembalikan nilai fungsi kerapatan pada argumen yang diberikan.
mpiktas

9

Ya, dimungkinkan untuk menggunakan distribusi sewenang-wenang untuk mendapatkan nilai-p untuk statistik apa pun . Secara teori dan praktis Anda dapat menghitung nilai satu sisi dengan rumus ini.

pvalue=P[T>Tobserved|H0hHailds]

TTHaibserved

TH0T

Satu-satunya asumsi yang Anda buat di sini adalah - Anda tahu distribusi nol T (yang mungkin tidak dalam format generator nomor acak R standar). Itu saja - selama Anda tahu distribusi nol, nilai-p dapat dihitung.


1
Saya harus berkomentar - ini adalah salah satu alasan mengapa nilai-p sangat populer dan mudah disalahpahami. (IMHO)
suncoolsu

Ok, ini masuk akal. Saya memiliki apa yang saya yakini sebagai estimasi yang bagus untuk distribusi nol. Adakah petunjuk tentang bagaimana menerapkan ini dalam R? Terima kasih!
Alan H.

1
@Lan - Apakah Anda tahu cara menghasilkan nilai acak dari Null Distribution Anda? Jika ya, misalkan - T = c (T1, ..., TN) diambil dari distribusi nol - p-value = jumlah (T> T_obs) / N. Jika Anda tidak tahu cara membuatnya, mungkin Anda perlu menggunakan Sampling Metropolis atau Sampling Gibbs untuk mendapatkan T1 ... TN, tetapi sangat bisa dilakukan.
suncoolsu
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.