Menentukan signifikansi statistik dari koefisien regresi linier dengan adanya multikolinieritas

9

Misalkan saya memiliki banyak kota dengan ukuran populasi yang berbeda, dan saya ingin melihat apakah ada hubungan linier positif antara jumlah toko minuman keras di kota dan jumlah DUI. Di mana saya menentukan apakah hubungan ini signifikan atau tidak berdasarkan uji-t dari estimasi koefisien regresi.

Sekarang jelas pop. ukuran sebuah kota akan berkorelasi positif dengan jumlah DUI serta jumlah toko minuman keras. Jadi jika saya menjalankan regresi linier sederhana pada hanya toko minuman keras dan melihat apakah koefisien regresi secara statistik signifikan, saya mungkin akan mengalami masalah multikolinieritas, dan terlalu memperkirakan dampak toko minuman keras pada DUI.

Manakah dari dua metode yang harus saya gunakan untuk memperbaiki ini?

  1. Saya harus membagi jumlah toko minuman keras di kota ini dengan penduduknya untuk mendapatkan nilai toko minuman keras per kapita dan kemudian mundur.

  2. Saya harus mundur pada toko dan ukuran minuman keras, dan kemudian melihat apakah koefisien toko minuman keras signifikan ketika mengontrol ukuran.

  3. Beberapa metode lain?

Jujur saya tidak bisa memutuskan mana yang tampaknya lebih masuk akal. Saya terombang-ambing di antara mereka, tergantung mana yang saya pikirkan saya bisa meyakinkan diri sendiri bahwa itu adalah cara yang benar.

Di satu sisi, toko minuman keras per kapita tampaknya merupakan variabel yang tepat untuk digunakan, karena DUI dilakukan oleh perorangan, tetapi itu tampaknya tidak terlalu ketat secara statistik. Di sisi lain, mengendalikan ukuran tampaknya secara statistik ketat, tetapi agak tidak langsung. Selain itu, jika saya skala ulang setelah menghitung toko-toko minuman keras variabel per kapita, saya mendapatkan koefisien regresi yang sangat mirip antara dua metode, tetapi metode 1 menghasilkan nilai-p yang lebih kecil.

Thoth
sumber
3
Pertanyaan untuk dijawab adalah apakah Anda ingin memodelkan tarif atau tidak. Mungkin membantu untuk membaca ini: Dalam model Poisson, apa perbedaan antara menggunakan waktu sebagai kovariat atau offset?
gung - Reinstate Monica
2
Pertanyaan penting dan dijebak dengan baik.
rolando2
2
Layak menekankan hal ini dari jawaban terkait @ gung: "Apakah Anda harus memodelkan jumlah atau tarif benar-benar tergantung pada apa pertanyaan substantif Anda. Anda harus memodelkan yang sesuai dengan apa yang ingin Anda ketahui." (mis. tujuannya bukan untuk meminimalkan nilai ap, tetapi untuk menilai efek yang menarik)
GeoMatt22

Jawaban:

5

Saya akan mundur "DUI per kapita" (Y) pada "liquer store per kapita" (X) dan "ukuran populasi" (Z). Dengan cara ini Y Anda mencerminkan kecenderungan mengemudi dalam keadaan mabuk orang perkotaan, sedangkan X adalah karakteristik populasi kota tertentu. Z adalah variabel kontrol untuk berjaga-jaga jika ada efek ukuran pada Y. Saya tidak berpikir Anda akan melihat masalah multikolinieritas dalam pengaturan ini.

Penyiapan ini lebih menarik daripada model Anda 1. Di sini, basis Anda adalah untuk menganggap bahwa jumlah DUI sebanding dengan populasi, sementara akan menangkap nonlinier, misalnya orang di kota besar lebih cenderung mengemudi dalam keadaan mabuk. Juga X mencerminkan lingkungan budaya dan hukum secara langsung, sudah disesuaikan dengan ukuran. Anda mungkin berakhir dengan X yang kira-kira sama untuk kota-kota dengan ukuran berbeda di Sough. Ini juga memungkinkan Anda memperkenalkan variabel kontrol lain seperti Merah / Biru, Pesisir / Kontinental dll.βZ

Aksakal
sumber
3

Jika memperkirakan model Anda dengan kuadrat terkecil biasa, regresi kedua Anda agak bermasalah.

Dan Anda mungkin ingin berpikir tentang bagaimana variasi istilah kesalahan Anda berbeda dengan ukuran kota.

Regresi (2) setara dengan regresi Anda (1) di mana pengamatan ditimbang oleh kuadrat dari populasi kota:

Untuk setiap kota , biarkan menjadi mabuk dalam insiden per kapita, biarkan menjadi toko minuman keras per kapita, dan biarkan menjadi populasi kota.y i x i n isayaysayaxsayansaya

Regresi (1) adalah: Jika Anda menjalankan regresi (2) tanpa konstanta, Anda pada dasarnya telah meningkatkan setiap pengamatan regresi (1) oleh populasi, yaitu, Anda menjalankan:

ysaya=Sebuah+bxsaya+ϵsaya

nsayaysaya=Sebuahnsaya+bnsayaxsaya+kamusaya

Ini adalah kuadrat terkecil , dan bobot yang Anda lamar adalah kuadrat dari populasi kota. Itu banyak beban yang kamu berikan di kota terbesar ?!

Perhatikan bahwa jika Anda memiliki pengamatan untuk setiap individu di kota dan menetapkan nilai rata-rata untuk setiap kota pada masing-masing individu, itu sama dengan menjalankan regresi di mana Anda menimbang setiap kota berdasarkan populasi (bukan kuadrat populasi).

Matthew Gunn
sumber
1

Saya menjalankan beberapa percobaan pada data simulasi untuk melihat metode mana yang paling berhasil. Silakan baca temuan saya di bawah ini.

Mari kita lihat dua skenario yang berbeda - Pertama di mana tidak ada hubungan langsung antara DUI & toko minuman keras & Kedua di mana kita memiliki hubungan langsung. Kemudian periksa setiap metode untuk melihat metode mana yang paling berhasil.

Kasus 1: Tidak ada hubungan langsung tetapi keduanya terkait dengan populasi

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)

Sekarang data disimulasikan, mari kita lihat bagaimana masing-masing metode tarif.

## 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_Liquor_Stores sangat signifikan, seperti yang diharapkan. Meskipun hubungannya tidak langsung.

## 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_Liquor_Stores tidak memiliki signifikansi. Tampaknya bekerja, tetapi jangan langsung menyimpulkan.

## 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_Liquor_Stores tidak signifikan, p-value juga cukup dekat dengan Metode 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_Liquor_Stores / popln) sangat signifikan! Tidak mengharapkan itu, mungkin metode ini bukan yang terbaik untuk pernyataan masalah Anda.

Kasus 2: Hubungan langsung dengan Populasi & Nbr_Liquor_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)

Mari kita lihat kinerja masing-masing metode dalam skenario ini.

## 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 ***

Diharapkan, tetapi bukan metode yang bagus untuk membuat kesimpulan kausal.

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

Itu mengejutkan bagi saya, saya mengharapkan metode ini untuk menangkap hubungan tetapi tidak mengambilnya. Jadi metode ini gagal dalam skenario ini!

## 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_Liquor_Stores signifikan, p-value masuk akal. Pemenang yang jelas bagi saya.

## 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; Metode 2 menghasilkan nilai-p paling akurat di berbagai skenario.

ab90hi
sumber