Bagaimana saya menghitung apakah regresi linier saya memiliki perbedaan yang signifikan secara statistik dari garis teoretis yang diketahui?


14

Saya punya beberapa data yang sesuai dengan garis linear:

masukkan deskripsi gambar di sini

Ketika saya melakukan regresi linier dari nilai-nilai ini, saya mendapatkan persamaan linear:

y=0,997x-0,0136

Dalam dunia yang ideal, persamaan harus menjadi y=x .

Jelas, nilai linear saya dekat dengan ideal itu, tetapi tidak persis. Pertanyaan saya adalah, bagaimana saya bisa menentukan apakah hasil ini signifikan secara statistik?

Apakah nilai 0,997 berbeda secara signifikan dari 1? Apakah -0,01 berbeda secara signifikan dari 0? Atau apakah secara statistik sama dan saya dapat menyimpulkan bahwa y=x dengan tingkat kepercayaan yang wajar?

Apa tes statistik yang baik yang bisa saya gunakan?

Terima kasih


1
Anda dapat menghitung apakah ada atau tidak ada perbedaan yang signifikan secara statistik, tetapi Anda harus mencatat bahwa ini tidak berarti apakah tidak ada perbedaan. Anda hanya bisa yakin tentang artinya ketika Anda memalsukan hipotesis nol, tetapi ketika Anda tidak memalsukan hipotesis nol maka ini bisa berupa (1) memang hipotesis nol itu benar (2) tes Anda tidak kuat karena jumlah rendah dari sampel (3) tes Anda tidak kuat karena hipotesis alternatif salah (3b) ukuran signifikansi statistik karena salah mewakili bagian non deterministik model.
Sextus Empiricus

Bagi saya data Anda tidak terlihat seperti y = x + white noise. Bisakah Anda tahu lebih banyak tentang itu? (tes untuk asumsi bahwa Anda mendapatkan noise seperti itu mungkin gagal 'melihat' perbedaan yang signifikan, tidak peduli seberapa besar sampel, bahkan ketika ada perbedaan besar antara data dan garis y = x, hanya karena Anda hanya membandingkan dengan baris lain y = a + bx, yang mungkin bukan perbandingan yang tepat dan paling kuat)
Sextus Empiricus

Juga, apa tujuan menentukan signifikansi. Saya melihat banyak jawaban menyarankan untuk menggunakan tingkat alfa 5% (interval kepercayaan 95%). Namun ini sangat sewenang-wenang. Sangat sulit untuk melihat signifikansi statistik sebagai variabel biner (ada atau tidak ada). Ini dilakukan dengan aturan seperti tingkat alfa standar, tetapi arbitrer dan hampir tidak berarti. Jika Anda memberikan konteks maka penggunaan tingkat cutoff tertentu untuk membuat keputusan (variabel biner) berdasarkan tingkat signifikansi ( bukan variabel biner), maka konsep seperti signifikansi biner lebih masuk akal.
Sextus Empiricus

1
"Regresi linier" apa yang Anda lakukan? Satu biasanya akan menganggap Anda untuk membahas regresi kuadrat terkecil biasa (dengan istilah intersep), tetapi dalam kasus itu karena kedua set residual akan memiliki rata-rata nol (tepatnya), intersep dalam regresi antara residual juga harus nol (tepatnya ). Karena tidak, sesuatu yang lain sedang terjadi di sini. Bisakah Anda memberikan latar belakang tentang apa yang Anda lakukan dan mengapa?
whuber

Ini terlihat mirip dengan masalah dalam pengukuran melihat apakah dua sistem memberikan hasil yang sama. Coba cari plot-hambar-altman untuk beberapa materi.
mdewey

Jawaban:


17

Jenis situasi ini dapat ditangani dengan uji-F standar untuk model bersarang . Karena Anda ingin menguji kedua parameter terhadap model nol dengan parameter tetap, hipotesis Anda adalah:

H0:β=[01]HSEBUAH:β[01].

Uji-F melibatkan pemasangan kedua model dan membandingkan jumlah sisa kuadratnya, yaitu:

SSE0=saya=1n(ysaya-xsaya)2SSESEBUAH=saya=1n(ysaya-β^0-β^1xsaya)2

Statistik pengujian adalah:

FF(y,x)=n-22SSE0-SSESEBUAHSSESEBUAH.

Nilai p yang sesuai adalah:

halhal(y,x)=F(y,x)F-Dist(r|2,n-2) dr.


Implementasi dalam R: Misalkan data Anda dalam bingkai data yang disebut DATAdengan variabel yang disebut ydan x. Uji-F dapat dilakukan secara manual dengan kode berikut. Dalam data tiruan simulasi yang saya gunakan, Anda dapat melihat bahwa koefisien yang diestimasi dekat dengan yang ada di hipotesis nol, dan nilai p tes tidak menunjukkan bukti signifikan untuk memalsukan hipotesis nol bahwa fungsi regresi yang sebenarnya adalah fungsi identitas.

#Generate mock data (you can substitute your data if you prefer)
set.seed(12345);
n    <- 1000;
x    <- rnorm(n, mean = 0, sd = 5);
e    <- rnorm(n, mean = 0, sd = 2/sqrt(1+abs(x)));
y    <- x + e;
DATA <- data.frame(y = y, x = x);

#Fit initial regression model
MODEL <- lm(y ~ x, data = DATA);

#Calculate test statistic
SSE0   <- sum((DATA$y-DATA$x)^2);
SSEA   <- sum(MODEL$residuals^2);
F_STAT <- ((n-2)/2)*((SSE0 - SSEA)/SSEA);
P_VAL  <- pf(q = F_STAT, df1 = 2, df2 = n-2, lower.tail = FALSE);

#Plot the data and show test outcome
plot(DATA$x, DATA$y,
     main = 'All Residuals',
     sub  = paste0('(Test against identity function - F-Stat = ',
            sprintf("%.4f", F_STAT), ', p-value = ', sprintf("%.4f", P_VAL), ')'),
     xlab = 'Dataset #1 Normalized residuals',
     ylab = 'Dataset #2 Normalized residuals');
abline(lm(y ~ x, DATA), col = 'red', lty = 2, lwd = 2);

The summaryoutput dan plotuntuk ini terlihat data seperti ini:

summary(MODEL);

Call:
lm(formula = y ~ x, data = DATA)

Residuals:
    Min      1Q  Median      3Q     Max 
-4.8276 -0.6742  0.0043  0.6703  5.1462 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.02784    0.03552  -0.784    0.433    
x            1.00507    0.00711 141.370   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.122 on 998 degrees of freedom
Multiple R-squared:  0.9524,    Adjusted R-squared:  0.9524 
F-statistic: 1.999e+04 on 1 and 998 DF,  p-value: < 2.2e-16

F_STAT;
[1] 0.5370824

P_VAL;
[1] 0.5846198

masukkan deskripsi gambar di sini


Sangat menarik bagaimana Anda menghasilkan data. Jika Anda telah menambahkan kesalahan pada variabel maka baris terbaik yang sesuai dengan data adalah bukan y = x. Ini menunjukkan seberapa besar uji hipotesis tidak hanya bergantung pada bagian deterministik y = x tetapi juga pada bagian non-deterministik yang menjelaskan bagaimana kesalahan didistribusikan. Uji hipotesis nol di sini adalah untuk hipotesis yang lebih spesifik 'y = x + e' dan bukan untuk 'y = x'. x
Sextus Empiricus

1
Ya, terlihat dengan baik. Data yang disimulasikan tidak menggunakan regresi linier homoskedastik standar. Saya menggunakan heteroskedastisitas dalam simulasi untuk mencoba secara kasar meniru pola data dalam plot yang ditunjukkan oleh OP. (Dan saya pikir saya melakukan pekerjaan yang sangat bagus!) Jadi ini adalah kasus di mana saya memasang model linear homoskedastik standar untuk data simulasi yang tidak dihasilkan dari model itu. Itu masih sah - tidak apa-apa untuk mensimulasikan data dari satu model dan kemudian memasangkannya ke model lain, untuk melihat apa yang muncul.
Pasang kembali Monica

1
sd = 2/sqrt(1+abs(x))yxy=xxy=xy=x+e
Sextus Empiricus

1
Itu benar, tetapi itu membawa Anda ke wilayah model kesalahan-dalam-variabel, yang membuatnya lebih rumit. Saya pikir OP hanya ingin menggunakan regresi linier standar dalam kasus ini.
Pasang kembali Monica

Saya setuju itu sidenote, tapi tetap penting. Kesederhanaan pertanyaan membingungkan saya (pada titik yang berbeda), dan juga membuat saya khawatir karena mungkin representasi yang terlalu sederhana. Tentu saja, itu tergantung pada apa yang sebenarnya ingin dicapai ('semua model salah ....') tetapi representasi sederhana ini dapat menjadi standar dan pertanyaan tambahan kompleks yang harus diingat seseorang akan dilupakan atau bahkan satu tidak pernah mulai memikirkannya (merujuk pada 95% CI dalam jawaban lain adalah contoh standar yang diikuti secara membabi buta).
Sextus Empiricus

5

Berikut adalah metode grafis keren yang saya tulis dari buku bagus Julian Faraway "Linear Models With R (Second Edition)". Ini interval kepercayaan 95% simultan untuk mencegat dan kemiringan, diplot sebagai elips.

Sebagai ilustrasi, saya membuat 500 pengamatan dengan variabel "x" memiliki distribusi N (rata-rata = 10, sd = 5) dan kemudian variabel "y" yang distribusinya adalah N (rata-rata = x, sd = 2). Itu menghasilkan korelasi sedikit di atas 0,9 yang mungkin tidak seketat data Anda.

Anda dapat memeriksa elips untuk melihat apakah titik (intersep = 0, kemiringan = 1) berada di dalam atau di luar interval kepercayaan simultan.

library(tidyverse)
library(ellipse)
#> 
#> Attaching package: 'ellipse'
#> The following object is masked from 'package:graphics':
#> 
#>     pairs

set.seed(50)
dat <- data.frame(x=rnorm(500,10,5)) %>% mutate(y=rnorm(n(),x,2))

lmod1 <- lm(y~x,data=dat)
summary(lmod1)
#> 
#> Call:
#> lm(formula = y ~ x, data = dat)
#> 
#> Residuals:
#>     Min      1Q  Median      3Q     Max 
#> -6.9652 -1.1796 -0.0576  1.2802  6.0212 
#> 
#> Coefficients:
#>             Estimate Std. Error t value Pr(>|t|)    
#> (Intercept)  0.24171    0.20074   1.204    0.229    
#> x            0.97753    0.01802  54.246   <2e-16 ***
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Residual standard error: 2.057 on 498 degrees of freedom
#> Multiple R-squared:  0.8553, Adjusted R-squared:  0.855 
#> F-statistic:  2943 on 1 and 498 DF,  p-value: < 2.2e-16

cor(dat$y,dat$x)
#> [1] 0.9248032

plot(y~x,dat)
abline(0,1)


confint(lmod1)
#>                  2.5 %    97.5 %
#> (Intercept) -0.1526848 0.6361047
#> x            0.9421270 1.0129370

plot(ellipse(lmod1,c("(Intercept)","x")),type="l")
points(coef(lmod1)["(Intercept)"],coef(lmod1)["x"],pch=19)

abline(v=confint(lmod1)["(Intercept)",],lty=2)
abline(h=confint(lmod1)["x",],lty=2)

points(0,1,pch=1,size=3)
#> Warning in plot.xy(xy.coords(x, y), type = type, ...): "size" is not a
#> graphical parameter

abline(v=0,lty=10)
abline(h=0,lty=10)

Dibuat pada 2019-01-21 oleh paket reprex (v0.2.1)


1

Anda dapat menghitung koefisien dengan sampel n bootstrap. Ini kemungkinan akan menghasilkan nilai koefisien terdistribusi normal (teorema batas pusat). Dengan itu Anda kemudian dapat membangun interval kepercayaan (misalnya 95%) dengan nilai-t (n-1 derajat kebebasan) di sekitar rata-rata. Jika CI Anda tidak termasuk 1 (0), itu berbeda secara statistik, atau lebih tepat: Anda dapat menolak hipotesis nol dari kemiringan yang sama.


Seperti yang telah Anda rumuskan di sini, itu hanya menguji dua hipotesis secara terpisah, tetapi yang Anda butuhkan adalah tes bersama.
kjetil b halvorsen

0

β0=0β1=1


1
Tetapi yang dibutuhkan adalah tes gabungan seperti pada jawaban lain.
kjetil b halvorsen

@ kjetilbhalvorsen Saya menyadari bahwa saya salah pagi ini membaca jawaban yang lain. Saya akan menghapusnya.
RScrlli

0

Anda harus cocok dengan regresi linier dan periksa interval kepercayaan 95% untuk dua parameter. Jika CI lereng termasuk 1 dan CI offset termasuk 0 uji dua sisi tidak signifikan. pada tingkat (95%) ^ 2 - saat kami menggunakan dua tes terpisah, risiko typ-I meningkat.

Menggunakan R:

fit = lm(Y ~ X)
confint(fit)

atau Anda gunakan

summary(fit)

dan hitung interval 2 sigma sendiri.

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.