Çoklu doğrusallık mevcudiyetinde lineer regresyon katsayısının istatistiksel öneminin belirlenmesi


9

Farklı nüfus boyutlarına sahip bir grup şehrim var ve bir şehirdeki içki deposu sayısı ile DUI sayısı arasında pozitif bir doğrusal ilişki olup olmadığını görmek istedim. Bu ilişkinin anlamlı olup olmadığını belirlediğim yerde, tahmini regresyon katsayısının t-testine dayanmaktadır.

Şimdi açıkça pop. Bir kentin büyüklüğü hem DUI'lerin sayısı hem de likör mağazalarının sayısı ile pozitif korelasyon gösterecektir. Bu nedenle, sadece likör depolarında basit bir doğrusal regresyon çalıştırırsam ve regresyon katsayısının istatistiksel olarak anlamlı olup olmadığını görürsem, muhtemelen çok doğrusallık sorununa gireceğim ve likör depolarının DUI'ler üzerindeki etkisini aşırı tahmin edeceğim.

Bunu düzeltmek için iki yöntemden hangisini kullanmalıyım?

  1. Kişi başına düşen bir likör deposu elde etmek için şehirdeki likör mağazalarının sayısını nüfusuna ayırmalıyım ve sonra buna gerilemeliyim.

  2. Hem likör depolarında hem de boyutunda gerilemeliyim ve daha sonra boyutu kontrol ederken likör deposu katsayısının önemli olup olmadığına bakmalıyım.

  3. Başka bir yöntem?

Hangisinin daha mantıklı göründüğüne dürüstçe karar veremiyorum. Hangileri hakkında düşündüğüme bağlı olarak kendimi doğru yol olduğuna ikna edebileceğime bağlı olarak aralarında boşa gidiyorum.

Bir yandan kişi başına düşen likör depoları, DUI'ler bireyler tarafından yapıldığından, kullanım için doğru değişken gibi görünüyor, ancak bu çok istatistiksel olarak titiz görünmüyor. Öte yandan, boyut kontrolü istatistiksel olarak titiz, ancak dolaylı görünmektedir. Ayrıca, kişi başına likör depolarını hesapladıktan sonra yeniden ölçeklendirirsem, iki yöntem arasında çok benzer regresyon katsayıları elde ederim, ancak yöntem 1 daha küçük bir p değeri üretir.


3
Yanıtlanması gereken bir soru, oranları modellemek isteyip istemediğinizdir. Bunu okumak yardımcı olabilir: Poisson modelinde, zamanı ortak değişken veya ofset olarak kullanma arasındaki fark nedir?
gung - Monica'yı eski durumuna getirin

2
Önemli ve iyi çerçeveli bir soru.
rolando2

2
@ Gung'un bağlantılı cevabından bunu vurgulamakta fayda var: "Sayıları veya oranları modellemeniz gerekip gerekmediği, asıl sorunuzun ne olduğuna bağlıdır. Bilmek istediğiniz şeye karşılık gelen modeli modellemelisiniz." (yani hedef, p değerini en aza indirmek değil, faizin etkisini değerlendirmektir)
GeoMatt22

Yanıtlar:


5

"Kişi başına düşen likör mağazalarında" (X) ve "nüfus büyüklüğünde" (Z) "Kişi başına DUI" (Y) 'ye gerileyeceğim. Bu şekilde Y'niz, kentsel insanların sarhoş sürüş eğilimini yansıtırken, X, belirli bir şehrin nüfus özelliğidir. Z, Y üzerinde boyut etkisi olması durumunda kontrol değişkenidir. Bu kurulumda çoklu bağlantı sorunu göreceğinizi sanmıyorum.

Bu kurulum model 1'den daha ilginçtir. Burada, temeliniz DUI sayısının nüfusla orantılı olduğunu varsaymaktır, doğrusal yakalayacaktır, örneğin daha büyük şehirlerdeki insanlar sarhoş sürüşe daha yatkındır. Ayrıca X, zaten boyutuna göre ayarlanmış kültürel ve yasal ortamı doğrudan yansıtır. Sough'daki farklı boyutlardaki şehirler için kabaca aynı X ile karşılaşabilirsiniz. Bu aynı zamanda Kırmızı / Mavi durumu, Kıyı / Kıta vb.βZ


3

Modelinizi normal en küçük karelerle tahmin ediyorsanız, ikinci regresyonunuz oldukça sorunludur.

Hata teriminizin varyansının şehir boyutuna göre nasıl değiştiğini düşünmek isteyebilirsiniz.

Gerileme (2) gözlemleri ile ağırlıklandırılmış sizin regresyon (1) eşdeğerdir meydanda şehrin nüfusunun:

Her şehir , kişi başına olayları sarhoş edelim, kişi başına likör deposu olsun ve şehrin nüfusu olsun.benybenxbennben

Regresyon (1): Regresyon (2) 'yi bir sabit olmadan çalıştırırsanız, her regresyon (1) gözlemini popülasyon tarafından ölçeklendirirsiniz, yani:

yben=bir+bxben+εben

nbenyben=birnben+bnbenxben+uben

Bu ağırlık en küçük karelerdir ve uyguladığınız ağırlıklar şehrin nüfusunun karesidir . En büyük şehirlere verdiğiniz ağırlık çok mu ?!

Bir şehirdeki her bir kişi için bir gözleminiz olsaydı ve her bireye şehir için ortalama değer atadıysanız, bu, her şehri nüfusa göre ağırlıklandırdığınız (nüfus karesi değil) bir gerileme yapmaya eşdeğer olacaktır.


1

Hangi yöntemin en iyi sonucu verdiğini görmek için simüle edilmiş veriler üzerinde birkaç deneme yaptım. Lütfen aşağıdaki bulgularımı okuyun.

İki farklı senaryoya bakalım - İlki DUI & Liquor mağazaları arasında doğrudan bir ilişkinin olmadığı ve ikincisi doğrudan ilişkimizin olduğu yerler. Ardından, hangi yöntemin en iyi sonucu verdiğini görmek için yöntemlerin her birini inceleyin.

Durum 1: Doğrudan ilişki yok, ancak her ikisi de nüfusla ilgili

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)

Veriler simüle edildiğine göre, yöntemlerin her birinin nasıl çalıştığını görelim.

## 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_Sreses beklendiği gibi oldukça önemli. İlişki dolaylı olmasına rağmen.

## 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'in hiçbir önemi yoktur. Çalışıyor gibi görünüyor, ancak henüz sonuçlara girmeyelim.

## 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 anlamlı değil, p değeri de Yöntem 1'e oldukça yakın.

## 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) çok önemli! Bunu beklemiyordum, belki de bu yöntem sorun ifadeniz için en iyisi değildir.

Durum 2: Nüfus ve Nbr_Liquor_Stores ile doğrudan ilişki

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

Bu senaryodaki yöntemlerin her birinin performansını görelim.

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

Beklenen, ancak nedensel çıkarımlar yapmak için harika bir yöntem değil.

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

Bu benim için sürpriz oldu, bu yöntemin ilişkiyi yakalamasını bekliyordum, ama onu almıyor. Bu senaryoda bu yöntem başarısız oluyor!

## 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 önemlidir, p değeri çok mantıklıdır. Benim için açık bir kazanan.

## 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; Yöntem 2 , farklı senaryolarda en doğru p değerlerini üretir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.