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


9

สมมติว่าฉันมีหลายเมืองที่มีขนาดประชากรแตกต่างกันและฉันต้องการที่จะดูว่ามีความสัมพันธ์เชิงบวกระหว่างจำนวนร้านขายเหล้าในเมืองและจำนวน DUIs หรือไม่ ที่ฉันกำหนดว่าความสัมพันธ์นี้มีความสำคัญหรือไม่ขึ้นอยู่กับ t-test ของสัมประสิทธิ์การถดถอยประมาณ

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

ฉันควรใช้วิธีใดในสองวิธีนี้เพื่อแก้ไขปัญหานี้

  1. ฉันควรแบ่งจำนวนร้านขายเหล้าในเมืองด้วยจำนวนประชากรเพื่อที่จะได้รับร้านขายเหล้าต่อมูลค่าประชากรและจากนั้นถอยกลับไปที่

  2. ฉันควรถอยกลับไปที่ร้านขายเหล้าและขนาดแล้วดูเพื่อดูว่าค่าสัมประสิทธิ์ร้านขายเหล้ามีความสำคัญเมื่อควบคุมขนาดหรือไม่

  3. วิธีอื่นบ้าง

ฉันไม่สามารถตัดสินใจได้ว่าอะไรจะสมเหตุสมผลกว่า ฉันโยกย้ายระหว่างพวกเขาขึ้นอยู่กับว่าฉันคิดว่าฉันสามารถโน้มน้าวตัวเองได้ว่าเป็นวิธีที่ถูกต้อง

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


3
คำถามที่จะตอบคือถ้าคุณต้องการให้แบบจำลองอัตราหรือไม่ มันอาจช่วยในการอ่านนี้: ในรูปแบบปัวซองความแตกต่างระหว่างการใช้เวลาเป็นค่า covariate หรือออฟเซ็ตคืออะไร?
gung - Reinstate Monica

2
คำถามที่สำคัญและมีกรอบ
rolando2

2
ควรเน้นถึงสิ่งนี้จากคำตอบที่เชื่อมโยงของ @ gung: "ไม่ว่าคุณจะเป็นแบบอย่างการนับหรืออัตราขึ้นอยู่กับคำถามที่แท้จริงของคุณคืออะไรคุณควรทำแบบจำลองที่สอดคล้องกับสิ่งที่คุณต้องการรู้" (เช่นเป้าหมายไม่ใช่เพื่อลดค่า ap แต่เพื่อประเมินผลกระทบที่น่าสนใจ)
GeoMatt

คำตอบ:


5

ฉันจะถอยหลัง "DUI per capita" (Y) บน "liquer stores ต่อ capita" (X) และ "ขนาดประชากร" (Z) วิธีนี้ Y ของคุณสะท้อนถึงความชอบต่อการเมาแล้วขับของคนในเมืองในขณะที่ X เป็นลักษณะประชากรของเมืองนั้น ๆ Z เป็นตัวแปรควบคุมในกรณีที่ถ้ามีผลขนาดกับ Y ฉันไม่คิดว่าคุณจะเห็นปัญหาความสัมพันธ์ระหว่างกันในการตั้งค่านี้

การตั้งค่านี้น่าสนใจยิ่งกว่ารุ่นที่ 1 ของคุณที่นี่ฐานของคุณคือสมมติว่าจำนวน DUIs นั้นแปรผันตามจำนวนประชากรขณะที่จะจับภาพความไม่เชิงเส้นเช่นคนที่อยู่ในเมืองใหญ่มักจะเมาแล้วขับ นอกจากนี้ X ยังสะท้อนถึงสภาพแวดล้อมทางวัฒนธรรมและทางกฎหมายโดยตรงปรับขนาดแล้ว คุณอาจท้ายด้วย X เดียวกันสำหรับเมืองที่มีขนาดแตกต่างกันใน Sough นอกจากนี้ยังช่วยให้คุณสามารถแนะนำตัวแปรควบคุมอื่น ๆ เช่นสถานะสีแดง / น้ำเงินชายฝั่ง / คอนติเนนตัลเป็นต้นβZ


3

หากการประมาณรูปแบบของคุณมีกำลังสองน้อยสุดสามัญการถดถอยครั้งที่สองของคุณค่อนข้างเป็นปัญหา

และคุณอาจต้องการคิดว่าความแปรปรวนของข้อผิดพลาดของคุณแตกต่างกันอย่างไรกับขนาดของเมือง

การถดถอย (2) เทียบเท่ากับการถดถอยของคุณ (1) โดยที่การสังเกตมีน้ำหนักโดยจัตุรัสของเมือง:

สำหรับแต่ละเมืองขอให้เมาแล้วขับเหตุการณ์ต่อหัวให้เป็นร้านขายเหล้าต่อคนต่อปีและให้เป็นประชากรของเมืองiyixini

การถดถอย (1) คือ: หากคุณใช้การถดถอย (2) โดยไม่มีค่าคงที่คุณจะต้องลดขนาดการสังเกตการณ์การถดถอย (1) ของประชากรแต่ละคนนั่นคือคุณกำลังเรียกใช้:

yi=a+bxi+ϵi

niyi=ani+bnixi+ui

นี่คือสี่เหลี่ยมที่มีน้ำหนักน้อยที่สุดและน้ำหนักที่คุณใช้เป็นสี่เหลี่ยมจัตุรัสของประชากรในเมือง นั่นคือน้ำหนักจำนวนมากที่คุณมอบให้กับเมืองใหญ่ที่สุดใช่ไหม!

โปรดทราบว่าหากคุณมีการสังเกตการณ์สำหรับแต่ละคนในเมืองและกำหนดค่าเฉลี่ยสำหรับแต่ละเมืองให้กับแต่ละคนนั่นจะเท่ากับการดำเนินการถดถอยที่คุณถ่วงน้ำหนักแต่ละเมืองตามจำนวนประชากร (ไม่ใช่ประชากรยกกำลังสอง)


1

ฉันทำการทดลองสองสามครั้งเกี่ยวกับข้อมูลจำลองเพื่อดูว่าวิธีใดดีที่สุด โปรดอ่านข้อค้นพบของฉันด้านล่าง

ให้ดูที่สองสถานการณ์ที่แตกต่างกัน - อย่างแรกที่ไม่มีความสัมพันธ์โดยตรงระหว่าง DUI & ร้านขายเหล้า & ที่สองที่เรามีความสัมพันธ์โดยตรง จากนั้นตรวจสอบแต่ละวิธีเพื่อดูว่าวิธีใดดีที่สุด

กรณีที่ 1: ไม่มีความสัมพันธ์โดยตรง แต่ทั้งคู่เกี่ยวข้องกับประชากร

library(rmutil)
############
## Simulating Data

set.seed(111)  
# Simulating city populations 
popln <- rpareto(n=10000,m=10000,s=1.2)

# Simulating DUI numbers
e1 <- rnorm(10000,mean=0,sd=15)
DUI = 100 + popln * 0.04 + e1
summary(DUI)
truehist(log(DUI))

# Simulating Nbr of Liquor stores
e2 <- rnorm(100,mean=0,sd=5)
Nbr_Liquor_Stores = 20 + popln * 0.009 + e2
summary(Nbr_Liquor_Stores)
truehist(log(Nbr_Liquor_Stores))

dat <- data.frame(popln,DUI,Nbr_Liquor_Stores)

ตอนนี้ข้อมูลได้ถูกจำลองลองมาดูกันว่าแต่ละวิธีมีวิธีอย่างไร

## Method 0: Simple OLS
fit0 <- lm(DUI~Nbr_Liquor_Stores,data=dat)
summary(fit0)

Coefficients:
                   Estimate Std. Error  t value Pr(>|t|)    
(Intercept)       9.4353630  0.2801544    33.68   <2e-16 ***
Nbr_Liquor_Stores 4.4444207  0.0001609 27617.49   <2e-16 ***

Nbr_Lonze_Stores สำคัญมากอย่างที่คาดไว้ แม้ว่าความสัมพันธ์จะเป็นทางอ้อม

## Method 1: Divide Liquor Stores by population and then regress
fit1 <- lm( I(DUI/popln) ~ Nbr_Liquor_Stores, data=dat)
summary(fit1)

                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)        4.981e-01  4.143e-02  12.022   <2e-16 ***
Nbr_Liquor_Stores -1.325e-05  2.380e-05  -0.557    0.578    

Nbr_Lonze_Stores ไม่มีความสำคัญ ดูเหมือนว่าจะทำงาน แต่ยังไม่ได้ข้อสรุป

## Method 2: Divide Liquor Stores by population and then regress
fit2 <- lm( DUI ~ Nbr_Liquor_Stores + popln, data=dat)
summary(fit2)

                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)        1.003e+02  6.022e-01 166.569   <2e-16 ***
Nbr_Liquor_Stores -1.603e-02  3.042e-02  -0.527    0.598    
popln              4.014e-02  2.738e-04 146.618   <2e-16 ***

Nbr_Lonze_Stores ไม่สำคัญ p-value ก็ค่อนข้างใกล้เคียงกับวิธีที่ 1

## Method 3: "DUI per capita" on "liquer stores per capita" and "population size" 
fit3 <- lm( I(DUI/popln) ~ I(Nbr_Liquor_Stores/popln) + popln, data=dat)
summary(fit3)

                             Estimate Std. Error t value Pr(>|t|)    
(Intercept)                 2.841e-02  1.300e-02   2.187   0.0288 *  
I(Nbr_Liquor_Stores/popln)  4.886e+00  1.603e-02 304.867   <2e-16 ***
popln                      -8.426e-09  6.675e-08  -0.126   0.8996    

(Nbr_Lonze_Stores / popln) สำคัญมาก! ไม่ได้คาดหวังว่าวิธีนี้อาจจะไม่ดีที่สุดสำหรับคำแถลงปัญหาของคุณ

กรณีที่ 2: ความสัมพันธ์โดยตรงกับทั้งประชากรและ Nbr_Lonze_Stores

### Simulating Data    

set.seed(111)  
# Simulating city populations 
popln <- rpareto(n=10000,m=10000,s=1.2)

# Simulating Nbr of Liquor stores
e2 <- rnorm(100,mean=0,sd=5)
Nbr_Liquor_Stores = 20 + popln * 0.009 + e2
summary(Nbr_Liquor_Stores)
truehist(log(Nbr_Liquor_Stores))

# Simulating DUI numbers
e1 <- rnorm(10000,mean=0,sd=15)
DUI = 100 + popln * 0.021 + Nbr_Liquor_Stores * 0.01 + e1
summary(DUI)
truehist(log(DUI))

dat <- data.frame(popln,DUI,Nbr_Liquor_Stores)

ลองดูประสิทธิภาพของแต่ละวิธีในสถานการณ์นี้

## Method 0: Simple OLS
fit0 <- lm(DUI~Nbr_Liquor_Stores,data=dat)
summary(fit0)

                   Estimate Std. Error t value Pr(>|t|)    
(Intercept)       5.244e+01  1.951e-01   268.8   <2e-16 ***
Nbr_Liquor_Stores 2.343e+00  1.121e-04 20908.9   <2e-16 ***

คาดหวัง แต่ไม่ใช่วิธีที่ยอดเยี่ยมในการอนุมานสาเหตุ

## Method 1: Divide Liquor Stores by population and then regress
fit1 <- lm( I(DUI/popln) ~ Nbr_Liquor_Stores, data=dat)
summary(fit1)

                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)        4.705e-01  4.005e-02  11.747   <2e-16 ***
Nbr_Liquor_Stores -1.294e-05  2.301e-05  -0.562    0.574    

นั่นเป็นเรื่องน่าประหลาดใจสำหรับฉันฉันคาดหวังว่าวิธีการนี้จะจับความสัมพันธ์ แต่มันไม่ได้มา ดังนั้นวิธีนี้จึงล้มเหลวในสถานการณ์นี้!

## Method 2: Divide Liquor Stores by population and then regress
fit2 <- lm( DUI ~ Nbr_Liquor_Stores + popln, data=dat)
summary(fit2)

                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)        1.013e+02  5.945e-01 170.391   <2e-16 ***
Nbr_Liquor_Stores -5.484e-02  2.825e-02  -1.941   0.0523 .  
popln              2.158e-02  2.543e-04  84.875   <2e-16 ***

Nbr_Lonze_Stores มีความสำคัญค่า p ทำให้สมเหตุสมผลมาก ผู้ชนะที่ชัดเจนสำหรับฉัน

## Method 3: "DUI per capita" on "liquer stores per capita" and "population size" 
fit3 <- lm( I(DUI/popln) ~ I(Nbr_Liquor_Stores/popln) + popln, data=dat)
summary(fit3)

                             Estimate Std. Error t value Pr(>|t|)    
(Intercept)                 6.540e-02  1.485e-02   4.405 1.07e-05 ***
I(Nbr_Liquor_Stores/popln)  3.915e+00  1.553e-02 252.063  < 2e-16 ***
popln                      -2.056e-08  7.635e-08  -0.269    0.788    

TLDR; วิธีที่ 2สร้างค่า p ที่แม่นยำที่สุดในสถานการณ์ต่างๆ

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