ฉันจะคำนวณได้อย่างไรว่าการถดถอยเชิงเส้นของฉันมีความแตกต่างอย่างมีนัยสำคัญทางสถิติจากเส้นทฤษฎีที่รู้จักหรือไม่?


14

ฉันมีข้อมูลบางอย่างที่พอดีกับเส้นตรง ๆ :

ป้อนคำอธิบายรูปภาพที่นี่

เมื่อฉันทำการถดถอยเชิงเส้นของค่าเหล่านี้ฉันจะได้สมการเชิงเส้น:

y=0.997x0.0136

ในโลกที่เหมาะสมการควรจะมีxy=x

เห็นได้ชัดว่าค่าเชิงเส้นของฉันใกล้เคียงกับอุดมคตินั้น แต่ไม่แน่นอน คำถามของฉันคือฉันจะทราบได้อย่างไรว่าผลลัพธ์นี้มีนัยสำคัญทางสถิติหรือไม่

ค่า 0.997 แตกต่างอย่างมีนัยสำคัญจาก 1 หรือไม่? -0.01 แตกต่างอย่างมีนัยสำคัญจาก 0 หรือไม่ หรือว่าเป็นสถิติเดียวกันและฉันสามารถสรุปได้ว่าด้วยระดับความเชื่อมั่นที่สมเหตุสมผลหรือไม่?y=x

การทดสอบทางสถิติที่ดีที่ฉันสามารถใช้ได้คืออะไร

ขอบคุณ


1
คุณสามารถคำนวณได้ว่ามีหรือไม่มีความแตกต่างอย่างมีนัยสำคัญทางสถิติ แต่คุณควรทราบว่าสิ่งนี้ไม่ได้หมายความว่าจะไม่มีความแตกต่าง คุณสามารถมั่นใจได้เกี่ยวกับความหมายเมื่อคุณปลอมแปลงสมมติฐานว่าง แต่เมื่อคุณไม่ปลอมแปลงสมมุติฐานว่างนี่อาจเป็นได้ (1) แน่นอนว่าสมมติฐานว่างนั้นถูกต้อง (2) การทดสอบของคุณไม่ได้ผลเนื่องจากมีจำนวนน้อย ของตัวอย่าง (3) การทดสอบของคุณไม่ได้ผลเนื่องจากข้อสมมติฐานทางเลือกที่ผิด (3b) การวัดที่ผิดพลาดอย่างมีนัยสำคัญทางสถิติเนื่องจากการแสดงส่วนที่ไม่ถูกต้องของแบบจำลองอย่างไม่ถูกต้อง
Sextus Empiricus

สำหรับฉันข้อมูลของคุณไม่เหมือนเสียง y = x + สีขาว คุณสามารถบอกเพิ่มเติมเกี่ยวกับมันได้หรือไม่ (การทดสอบสมมติฐานที่คุณได้รับเสียงดังกล่าวอาจล้มเหลวในการ 'เห็น' ความแตกต่างที่สำคัญไม่ว่าตัวอย่างจะมีขนาดใหญ่เพียงใดแม้ว่าจะมีความแตกต่างอย่างมากระหว่างข้อมูลและบรรทัด y = x เพียงเพราะคุณเป็น เพียงเปรียบเทียบกับสายอื่น ๆ y = a + bx ซึ่งอาจไม่ใช่การเปรียบเทียบที่ถูกต้องและมีประสิทธิภาพมากที่สุด)
Sextus Empiricus

นอกจากนี้เป้าหมายของการกำหนดความสำคัญคืออะไร ฉันเห็นคำตอบมากมายแนะนำให้ใช้ระดับอัลฟ่า 5% (ช่วงความมั่นใจ 95%) อย่างไรก็ตามเรื่องนี้เป็นเรื่องที่สุ่มมาก มันยากมากที่จะเห็นนัยสำคัญทางสถิติว่าเป็นตัวแปรไบนารี (ปัจจุบันหรือไม่อยู่) สิ่งนี้ทำด้วยกฎเช่นระดับอัลฟ่ามาตรฐาน แต่มันไม่มีกฎเกณฑ์และไร้ความหมาย หากคุณให้บริบทแล้วการใช้ระดับ cutoff บางอย่างเพื่อการตัดสินใจ (ตัวแปรไบนารี) ขึ้นอยู่กับระดับความสำคัญ ( ไม่ใช่ตัวแปรไบนารี) ดังนั้นแนวคิดเช่นความสำคัญแบบไบนารีจะสมเหตุสมผลมากขึ้น
Sextus Empiricus

1
คุณกำลังแสดง "การถดถอยเชิงเส้น" แบบใด โดยทั่วไปแล้วคุณจะพิจารณาว่ากำลังพูดถึงการถดถอยกำลังสองน้อยที่สุดธรรมดา (พร้อมกับการตัดคำ) แต่ในกรณีนั้นเพราะทั้งสองชุดจะมีค่าเฉลี่ยเป็นศูนย์ (แน่นอน) การสกัดกั้นในการถดถอยระหว่างส่วนที่เหลือควรเป็นศูนย์เช่นกัน ) เนื่องจากมันไม่ได้มีอะไรอย่างอื่นเกิดขึ้นที่นี่ คุณสามารถให้พื้นฐานในสิ่งที่คุณกำลังทำอยู่และทำไม?
whuber

สิ่งนี้ดูคล้ายกับปัญหาในการวัดการดูว่าทั้งสองระบบให้ผลเหมือนกันหรือไม่ ลองดูที่อุเบกขาธรรมดาสำหรับเนื้อหาบางอย่าง
mdewey

คำตอบ:


17

ประเภทของสถานการณ์นี้สามารถจัดการโดยมาตรฐานF-ทดสอบสำหรับรุ่นที่ซ้อนกัน เนื่องจากคุณต้องการทดสอบพารามิเตอร์ทั้งสองกับแบบจำลอง null ด้วยพารามิเตอร์คงที่สมมติฐานของคุณคือ:

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

การทดสอบแบบ F เกี่ยวข้องกับการปรับให้เหมาะสมกับทั้งสองรุ่นและเปรียบเทียบผลรวมของส่วนที่เหลือซึ่ง ได้แก่ :

SSE0=Σผม=1n(Yผม-xผม)2SSEA=Σผม=1n(Yผม-β^0-β^1xผม)2

สถิติการทดสอบคือ:

FF(Y,x)=n-22SSE0-SSEASSEA.

ค่า p ที่สอดคล้องกันคือ:

พีพี(Y,x)=F(Y,x)F-Dist(R|2,n-2) dR.


การใช้งานใน R:สมมติว่าข้อมูลของคุณอยู่ในกรอบข้อมูลที่เรียกว่าDATAพร้อมกับตัวแปรที่เรียกว่าyxและ การทดสอบ F สามารถดำเนินการด้วยตนเองด้วยรหัสต่อไปนี้ ในข้อมูลจำลองจำลองที่ฉันใช้คุณจะเห็นว่าค่าสัมประสิทธิ์โดยประมาณใกล้เคียงกับค่าในสมมติฐานว่างและ p-value ของการทดสอบไม่แสดงหลักฐานที่มีนัยสำคัญในการปลอมแปลงสมมติฐานว่างซึ่งฟังก์ชันการถดถอยที่แท้จริงคือ ฟังก์ชันตัวตน

#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);

summaryส่งออกและplotเพื่อให้ดูข้อมูลนี้ได้เช่นนี้

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

ป้อนคำอธิบายรูปภาพที่นี่


เป็นที่น่าสนใจว่าคุณสร้างข้อมูลอย่างไร หากคุณเพิ่มข้อผิดพลาดในตัวแปรดังนั้นบรรทัดที่ดีที่สุดที่เหมาะสมกับข้อมูลจะไม่ใช่ y = x นี่แสดงให้เห็นว่าการทดสอบสมมติฐานขึ้นอยู่กับส่วนที่กำหนดขึ้นเพียงอย่างเดียวคือ y = x แต่ยังอยู่ในส่วนที่ไม่ได้กำหนดขึ้นซึ่งจะอธิบายถึงวิธีการกระจายข้อผิดพลาด การทดสอบสมมติฐานว่างนี่คือสำหรับสมมติฐานที่เฉพาะเจาะจงมากขึ้น 'y = x + e' และไม่ใช่สำหรับ 'y = x' x
Sextus Empiricus

1
ใช่เห็นเป็นอย่างดี ข้อมูลที่จำลองไม่ได้ใช้การถดถอยเชิงเส้นมาตรฐานแบบ homoskedastic ฉันใช้ heteroscedasticity ในการจำลองเพื่อพยายามเลียนแบบรูปแบบข้อมูลในพล็อตที่แสดงโดย OP (และฉันคิดว่าฉันทำได้ดีมากเลย!) ดังนั้นนี่คือกรณีที่ฉันเหมาะสมกับโมเดลเชิงเส้น homoskedastic มาตรฐานกับข้อมูลจำลองที่ไม่ได้สร้างขึ้นจากแบบจำลองนั้น แม้ว่ามันจะยังคงถูกต้องตามกฎหมาย - มันก็โอเคที่จะจำลองข้อมูลจากแบบจำลองหนึ่งและจากนั้นให้พอดีกับแบบอื่นเพื่อดูว่าเกิดอะไรขึ้น
Reinstate Monica

1
ฉันไม่ได้สังเกตเห็นความแตกต่างในส่วนsd = 2/sqrt(1+abs(x))(ฉันพบรูปร่างนูนกลางในกราฟ OPs แปลกและภาพของคุณทำให้ฉันคิดว่า 'โอ้มันไม่แปลกเลยหลังจากนั้นต้องมีความหนาแน่น' ดังนั้นงานที่ดีจริงๆ ) สิ่งที่ฉันหมายถึงคือคุณเพิ่มข้อผิดพลาดในตัวแปรแต่ไม่รวมถึงตัวแปรฉันเดาว่านี่เป็นสิ่งสำคัญ ในทางปฏิบัติเมื่อหนึ่งในมาตรการที่มีความสัมพันธ์ในทางทฤษฎีอาจมีข้อผิดพลาดบางอย่างในตัวแปรและหนึ่งควรจะสามารถที่จะบิดเบือนข้อมูลเพียงพอได้รับ แต่สิ่งหนึ่งลวงตาในความเป็นจริงYxY=xxY=xY=x+อี
Sextus Empiricus

1
นั่นเป็นเรื่องจริง แต่มันนำคุณเข้าสู่ดินแดนของโมเดลข้อผิดพลาดในตัวแปรซึ่งทำให้มันซับซ้อนมากขึ้น ฉันคิดว่า OP ต้องการใช้การถดถอยเชิงเส้นมาตรฐานในกรณีนี้
Reinstate Monica

ฉันยอมรับว่ามันเป็นไซด์โนท แต่ก็เป็นสิ่งสำคัญ ความเรียบง่ายของคำถามทำให้ฉันสับสน (ในจุดต่าง ๆ ) และมันทำให้ฉันกังวลเพราะอาจเป็นการแสดงที่ง่ายเกินไป แน่นอนว่ามันขึ้นอยู่กับสิ่งที่คนหนึ่งพยายามจะบรรลุจริง ('แบบจำลองทั้งหมดผิด .... ') แต่การเป็นตัวแทนที่เรียบง่ายนี้อาจกลายเป็นมาตรฐานและคำถามเพิ่มเติมที่ซับซ้อนที่เราควรระลึกไว้ว่าจะถูกลืมหรือแม้แต่ ไม่เคยเริ่มคิด (อ้างอิงถึง 95% CIs ในคำตอบอื่น ๆ เป็นตัวอย่างของมาตรฐานที่ผู้คนติดตามอย่างสุ่ม)
Sextus Empiricus

5

นี่เป็นวิธีกราฟิกที่ยอดเยี่ยมที่ฉันเปลื้องจากหนังสือยอดเยี่ยม "Julian Faraway" รุ่นนางแบบเชิงเส้นด้วย R (Second Edition) " มันเป็นช่วงความเชื่อมั่น 95% พร้อมกันสำหรับการสกัดกั้นและความชันซึ่งถูกพล็อตเป็นวงรี

สำหรับภาพประกอบฉันสร้างการสังเกต 500 ครั้งด้วยตัวแปร "x" ที่มีการแจกแจง N (หมายถึง = 10, sd = 5) จากนั้นตัวแปร "y" ที่มีการแจกแจงคือ N (หมายถึง x, sd = 2) นั่นให้ความสัมพันธ์กับ 0.9 มากกว่าเล็กน้อยซึ่งอาจไม่แน่นเท่าข้อมูลของคุณ

คุณสามารถตรวจสอบวงรีเพื่อดูว่าจุด (จุดตัด = 0, ความชัน = 1) อยู่ภายในหรือภายนอกช่วงความมั่นใจพร้อมกันหรือไม่

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)

สร้างเมื่อ 2019-01-21 โดยแพ็คเกจ reprex (v0.2.1)


1

คุณสามารถคำนวณค่าสัมประสิทธิ์ด้วยตัวอย่าง n bootstrapped สิ่งนี้น่าจะส่งผลให้ค่าสัมประสิทธิ์การกระจายแบบปกติ (ทฤษฎีขีด จำกัด กลาง) เมื่อนั้นคุณสามารถสร้างช่วงความเชื่อมั่น (เช่น 95%) ด้วยค่า t-value (n-1 องศาอิสระ) รอบค่าเฉลี่ย หาก CI ของคุณไม่รวม 1 (0) จะแตกต่างกันอย่างมีนัยสำคัญทางสถิติหรือแม่นยำยิ่งขึ้น: คุณสามารถปฏิเสธสมมติฐานว่างของความชันเท่ากัน


เมื่อคุณกำหนดสูตรไว้ที่นี่มันจะทดสอบเพียงสมมติฐานสองข้อแยกกัน แต่สิ่งที่คุณต้องการคือการทดสอบข้อต่อ
kjetil b halvorsen

0

β0=0β1=1


1
แต่สิ่งที่จำเป็นคือการทดสอบข้อต่อเหมือนกับคำตอบอื่น ๆ
kjetil b halvorsen

@kjetilbhalvorsen ฉันรู้ว่าฉันผิดวันนี้อ่านคำตอบอื่น ๆ ฉันจะลบมัน
RScrlli

0

คุณควรใส่การถดถอยเชิงเส้นและตรวจสอบช่วงความมั่นใจ 95% สำหรับพารามิเตอร์ทั้งสอง หาก CI ของความชันมี 1 และ CI ของออฟเซ็ตรวม 0 การทดสอบสองด้านนั้นไม่มีนัยสำคัญโดยประมาณ ในระดับ (95%) ^ 2 - เมื่อเราใช้การทดสอบสองแบบแยกกันความเสี่ยงของ typ-I จะเพิ่มขึ้น

ใช้ R:

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

หรือคุณใช้

summary(fit)

และคำนวณช่วงเวลา 2 ซิกม่าด้วยตัวเอง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.