Katakanlah saya memiliki data yang memiliki ketidakpastian. Sebagai contoh:
X Y
1 10±4
2 50±3
3 80±7
4 105±1
5 120±9
Sifat ketidakpastian dapat berupa pengukuran ulang atau eksperimen, atau misalnya ketidakpastian instrumen pengukuran.
Saya ingin menyesuaikan kurva menggunakan R, sesuatu yang biasanya saya lakukan lm
. Namun, ini tidak memperhitungkan ketidakpastian dalam data saat itu memberi saya ketidakpastian dalam koefisien fit, dan akibatnya interval prediksi. Melihat dokumentasi, lm
halaman memiliki ini:
... bobot dapat digunakan untuk menunjukkan bahwa pengamatan yang berbeda memiliki varian yang berbeda ...
Jadi itu membuat saya berpikir bahwa mungkin ini ada hubungannya dengan itu. Saya tahu teori melakukannya secara manual, tetapi saya bertanya-tanya apakah mungkin melakukan itu dengan lm
fungsinya. Jika tidak, apakah ada fungsi lain (atau paket) yang mampu melakukan ini?
EDIT
Melihat beberapa komentar, berikut adalah beberapa klarifikasi. Ambil contoh ini:
x <- 1:10
y <- c(131.4,227.1,245,331.2,386.9,464.9,476.3,512.2,510.8,532.9)
mod <- lm(y ~ x + I(x^2))
summary(mod)
Memberi saya:
Residuals:
Min 1Q Median 3Q Max
-32.536 -8.022 0.087 7.666 26.358
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 39.8050 22.3210 1.783 0.11773
x 92.0311 9.3222 9.872 2.33e-05 ***
I(x^2) -4.2625 0.8259 -5.161 0.00131 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 18.98 on 7 degrees of freedom
Multiple R-squared: 0.986, Adjusted R-squared: 0.982
F-statistic: 246.7 on 2 and 7 DF, p-value: 3.237e-07
Jadi pada dasarnya, koefisien saya adalah a = 39,8 ± 22,3, b = 92,0 ± 9,3, c = -4,3 ± 0,8. Sekarang katakanlah untuk setiap titik data, kesalahannya adalah 20. Saya akan menggunakan weights = rep(20,10)
dalam lm
panggilan dan saya mendapatkan ini sebagai gantinya:
Residual standard error: 84.87 on 7 degrees of freedom
tetapi kesalahan std pada koefisien tidak berubah.
Secara manual, saya tahu bagaimana cara melakukannya dengan menghitung matriks kovarians menggunakan aljabar matriks dan meletakkan bobot / kesalahan di sana, dan menurunkan interval kepercayaan menggunakan itu. Jadi apakah ada cara untuk melakukannya dalam fungsi lm itu sendiri, atau fungsi lainnya?
sumber
boot
paket di R. Setelah itu Anda bisa membiarkan regresi linier berjalan di atas set data bootstrap.lm
akan menggunakan varians yang dinormalisasi sebagai bobot dan kemudian menganggap bahwa model Anda secara statistik valid untuk memperkirakan ketidakpastian parameter. Jika Anda berpikir bahwa ini bukan masalahnya (bilah kesalahan terlalu kecil atau terlalu besar), Anda tidak boleh mempercayai perkiraan ketidakpastian.Jawaban:
Jenis model ini sebenarnya jauh lebih umum di cabang ilmu tertentu (misalnya fisika) dan teknik daripada regresi linier "normal". Jadi, dalam alat fisika seperti
ROOT
, melakukan jenis fit ini sepele, sedangkan regresi linier tidak diterapkan secara asli! Fisikawan cenderung menyebut ini hanya "fit" atau fit meminimalkan chi-square.lm
lm
lm bobot dan kesalahan standar
Ada beberapa solusi yang mungkin diberikan dalam jawaban di sana. Secara khusus, jawaban anonim di sana menyarankan menggunakan
vcov(mod)/summary(mod)$sigma^2
lm
EDIT
Jika Anda sering melakukan hal semacam ini, Anda mungkin mempertimbangkan untuk menggunakan
ROOT
(yang tampaknya melakukan ini secara sementaralm
danglm
tidak). Berikut adalah contoh singkat tentang bagaimana melakukan iniROOT
. Pertama,ROOT
dapat digunakan melalui C ++ atau Python, dan ini merupakan unduhan dan instalasi yang sangat besar. Anda dapat mencobanya di browser menggunakan notebook Jupiter, mengikuti tautan di sini , memilih "Binder" di sebelah kanan, dan "Python" di sebelah kiri.dan plot yang bagus dihasilkan:
lm
EDIT KEDUA
Jawaban lain dari pertanyaan sebelumnya yang sama oleh @ Wolfgang memberikan solusi yang lebih baik:
rma
alat darimetafor
paket (saya awalnya menafsirkan teks dalam jawaban itu berarti tidak menghitung intersep, tapi bukan itu masalahnya). Mengambil varians dalam pengukuran y menjadi sekadar y:Ini jelas merupakan alat R murni terbaik untuk jenis regresi yang saya temukan.
sumber
lm
. Jika Anda melakukan ini, statistik validasi, seperti chi-squared, akan dimatikan. Jika dispersi residu Anda tidak cocok dengan bilah kesalahan Anda, ada yang salah dalam model statistik (baik pilihan model atau bilah kesalahan atau hipotesis normal ...). Dalam kedua kasus tersebut, ketidakpastian parameter tidak akan dapat diandalkan !!!lm
untuk mendapatkan hasil yang benar. (Jika ada yang penasaran, saya akan menunjukkan cara melakukannyaROOT
).