Uji koefisien model (kemiringan regresi) terhadap beberapa nilai

20

Dalam R, ketika saya memiliki (umum) model linier ( lm, glm, gls, glmm, ...), bagaimana saya bisa menguji koefisien (slope regresi) terhadap nilai selain 0? Dalam ringkasan model, hasil uji t dari koefisien secara otomatis dilaporkan, tetapi hanya untuk perbandingan dengan 0. Saya ingin membandingkannya dengan nilai lain.

Saya tahu saya dapat menggunakan trik dengan reparametrizing y ~ xsebagai y - T*x ~ x, di mana Tnilai yang diuji, dan menjalankan model reparametrized ini, tetapi saya mencari solusi yang lebih sederhana, yang mungkin dapat bekerja pada model asli.

Ingin tahu
sumber

Jawaban:

17

Berikut adalah solusi yang lebih luas yang akan bekerja dengan paket apa pun, atau bahkan jika Anda hanya memiliki hasil regresi (seperti dari kertas).

Ambil koefisien dan kesalahan standarnya.

Hitung . Df untuk sama dengan untuk tes dengan . tH0:β=0t=β^-βH0se(β^)tH0:β=0

Glen_b -Reinstate Monica
sumber
1
Terima kasih Glen, saya tahu ini dari [jawaban yang bagus ini]. Tetapi bagaimana saya akan mendapatkan nilai-p dari nilai-t?
Penasaran
2
@Curiouspt()
Affine
@Curious: Seperti kata Affine, fungsi R pt - atau apa pun yang memberi Anda nilai t cdfs. Banyak paket memiliki ini, dan ada banyak tabel-t.
Glen_b -Reinstate Monica
Alangkah baiknya jika lm, lmer dan yang lainnya menerima parameter uji yang berbeda dari nol secara langsung.
skan
@skan itu benar-benar satu baris kode R untuk mendapatkan nilai-p; itu akan menjadi masalah sederhana untuk menulis sedikit fungsi untuk mengambil output dari summary.lm dan menghasilkan tabel baru dengan spesifikasi persis Anda.
Glen_b -Reinstate Monica
10

Anda dapat menggunakan uji-t sederhana seperti yang diusulkan oleh Glen_b, atau tes Wald yang lebih umum.

Uji Wald memungkinkan untuk menguji beberapa hipotesis pada berbagai parameter. Diformulasikan sebagai: mana R memilih (kombinasi dari) koefisien, dan q menunjukkan nilai yang akan diuji terhadap, β menjadi koefisien regresi standar.Rβ=qβ

Dalam contoh Anda, di mana Anda hanya memiliki satu hipotesis pada satu parameter, R adalah vektor baris, dengan nilai satu untuk parameter yang dimaksud dan nol di tempat lain, dan q adalah skalar dengan batasan untuk diuji.

Di R, Anda dapat menjalankan tes Wald dengan fungsi linearHypothesis () dari paket mobil . Katakanlah Anda ingin memeriksa apakah koefisien kedua (ditunjukkan oleh argumen hipotesis.matrix ) berbeda dari 0,1 (argumen rhs ):

reg <- lm(freeny)
coef(reg)

# wald test for lag.quarterly.revenue =0.1
>library(car)
>linearHypothesis(reg, hypothesis.matrix = c(0, 1, rep(0,3)), rhs=0.1)
#skip some result, look at last value on last row, of Pr(>F) 
  Res.Df       RSS Df  Sum of Sq      F Pr(>F)
1     35 0.0073811                            
2     34 0.0073750  1 6.0936e-06 0.0281 0.8679

Untuk uji-t, fungsi ini mengimplementasikan uji-t yang ditunjukkan oleh Glen_b:

ttest <- function(reg, coefnum, val){
  co <- coef(summary(reg))
  tstat <- (co[coefnum,1]-val)/co[coefnum,2]
  2 * pt(abs(tstat), reg$df.residual, lower.tail = FALSE)
}

> ttest(reg, 2,0.1)
[1] 0.8678848

Mari kita pastikan kita mendapatkan prosedur yang benar dengan membandingkan uji t Wald, t-test kita, dan R default, untuk hipotesis standar bahwa koefisien kedua adalah nol:

> linearHypothesis(reg, hypothesis.matrix = c(0, 1, rep(0,3)), rhs=0)[["Pr(>F)"]][2]
[1] 0.3904361
> ttest(reg, 2,0)
[1] 0.3904361
## The 'right' answer from R:
> coef(summary(reg))[2,4]
[1] 0.3904361

Anda harus mendapatkan hasil yang sama dengan ketiga prosedur.

Matifou
sumber
kelihatan bagus! Bisakah Anda jelaskan hypothesis.matrixparameternya?
Penasaran
Saya tidak yakin apakah tes Wald melakukannya. Saya bermaksud menggunakan uji-t normal yang secara standar dilaporkan bersama dengan parameter, tetapi tidak dengan 0 tetapi dengan beberapa nilai lainnya.
Penasaran
@Curious Hope lebih jelas sekarang?
Matifou
3

Pada akhirnya, jauh solusi termudah adalah melakukan reparametrization:

gls(I(y - T*x) ~ x, ...)
Ingin tahu
sumber
Apakah itu akan menghasilkan hasil yang sama?
skan
Tetapi Anda mengurangi sesuatu yang tidak independen. Bukankah itu akan menjadi masalah dengan asumsi untuk kuadrat atau dengan collinearity? Apa bedanya dengan lm (y ~ x + + offset (T * x))?
skan
1
@skan regresi bersyarat pada x, tidak ada ketergantungan di sana; harus sama dengan menggunakan offset.
Glen_b -Reinstate Monica