Menghitung nilai-p secara manual untuk uji-t: Cara menghindari nilai yang lebih besar dari


8

Dua metode ini untuk menghitung nilai p harus setara:

t.test(rats.drug,mu=1.2)$p.value
2*pt((mean(rats.drug)-1.2)*sqrt(n)/sd(rats.drug),df=n-1)

Masalah dengan metode kedua adalah bahwa ada risiko mendapatkan nilai lebih besar dari 1 (sebenarnya hingga 2):

2*pt((1.5-1.2)*sqrt(100)/.5,df=100-1)
[1] 2

Ini tentu saja bisa diperbaiki oleh

2*pt((1.5-1.2)*sqrt(100)/.5,df=100-1,lower=F)
[1] 3.245916e-08

Pertanyaan saya
Jelas algoritma fungsi t-test cukup cerdas untuk membedakan kedua kasus ini (apakah rata-rata sampel lebih besar atau lebih kecil dari rata-rata yang diberikan). Apakah ada metode mudah untuk mereplikasi perhitungan nilai-p secara manual seperti yang dilakukan oleh fungsi uji-t?

Solusi saya saat ini adalah pernyataan if yang memeriksa apakah nilai yang dihasilkan lebih besar dari 1 dan dalam hal ini melakukan perhitungan yang sama lagi dengan opsi = F lebih rendah tapi mungkin ada cara yang lebih baik.


8
Melihat kode: getAnywhere(t.test.default). Anda akan menemukannya di pval <- 2 * pt(-abs(tstat), df)sana.
Roland

Jawaban:



0

Glen_b benar tentang abs, namun, saya telah menemukan bahwa dalam set data tertentu nilai akan membutuhkan -absuntuk memiliki efek yang diinginkan. Saya tidak dapat menjelaskan alasannya, tetapi saya akan meninggalkan baris kode ini di sini, memetikan siapa pun yang memiliki masalah serupa menemukan utas ini.

  t.value <- betacoeff/standard error of the beta coefficients
  p.value <- 2 * pt(-abs(t.value), df = nrow(data)-2)

Jawaban diperluas atas permintaan mdewey.


1
Bisakah Anda memperluas bagaimana menurut Anda ini menambah komentar dan jawaban yang sudah ada di sana?
mdewey
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.