Saya ingin tahu cara mengubah nilai negatif Log()
, karena saya memiliki data heteroskedastik. Saya membaca bahwa itu bekerja dengan rumus Log(x+1)
tetapi ini tidak bekerja dengan database saya dan saya terus mendapatkan NaNs sebagai hasilnya. Misalnya saya mendapatkan pesan Peringatan ini (saya tidak memasukkan database lengkap saya karena saya pikir dengan salah satu nilai negatif saya sudah cukup untuk menunjukkan contoh):
> log(-1.27+1)
[1] NaN
Warning message:
In log(-1.27 + 1) : NaNs produced
>
Terima kasih sebelumnya
MEMPERBARUI:
Ini adalah histogram dari data saya. Saya bekerja dengan deret waktu palaeontologis pengukuran kimia, Misalnya perbedaan antara variabel seperti Ca dan Zn terlalu besar, maka saya perlu beberapa jenis standardisasi data, itulah sebabnya saya menguji log()
fungsi.
Ini adalah data mentah saya
log(x+1)
transformasi hanya didefinisikanx > -1
, karena kemudianx + 1
positif. Akan lebih baik untuk mengetahui alasan Anda ingin log mengubah data Anda.sign(x) * (abs(x))^(1/3)
, detail tergantung pada sintaksis perangkat lunak. Untuk informasi lebih lanjut tentang akar pangkat tiga, lihat misalnya stata-journal.com/sjpdf.html?articlenum=st0223 (lihat esp. Hlm.152-3). Kami menggunakan akar pangkat tiga untuk membantu visualisasi variabel respons yang sifatnyaJawaban:
Karena logaritma hanya didefinisikan untuk angka positif, Anda tidak dapat mengambil logaritma nilai negatif. Namun, jika Anda bertujuan mendapatkan distribusi yang lebih baik untuk data Anda, Anda dapat menerapkan transformasi berikut.
Misalkan Anda memiliki data negatif miring:
maka Anda dapat menerapkan transformasi pertama untuk membuat data Anda berada di :(−1,1)
dan akhirnya menerapkan tangen hiperbolik terbalik:
Sekarang, data Anda terlihat berdistribusi normal. Ini juga disebut transformasi Fisher.
sumber
z <- z[-max(z)]
danz <- z[-min(z)]
menyusut secara tidak tepatz
ke nilai tunggal. Juga fungsi umumatanh(((x - min(x)) / (max(x) - min(x))))
menghasilkanInf
untuk nilai minimum dan maksimumx
.Untuk mengubahnya menjadi skala log, pertama-tama cari log dari angka positif lalu kalikan dengan tandanya, kode berikut harus melakukannya.
Dengan menggunakan contoh di atas kita dapat memplot distribusi miring berikut ini
Setelah menggunakan fungsi transformasi sebagai berikut, kami mendapatkan distribusi yang terlihat lebih 'normal'
sumber
R
termasuk) mengimplementasikan fungsi signum (yang mengembalikan -1 untuk angka negatif, 1 untuk angka positif dan 0 untuk nol). Menggunakannya akan lebih ekspresif dan lebih cepat. (2) Proposal Anda adalah miskin untuk menganalisis data seperti yang diilustrasikan, karena memiliki diskontinuitas besar di nol!y <- 1
ketika terlihat sewenang-wenang - itu benar-benar dapat mengacaukan analisis statistik.