2013-08-15 36 views
5

Bağımlı değişkenimin yaşam beklentisi olduğu ve sekiz bağımsız değişkene sahip olduğum sayım verileri üzerine bir regresyon yapıyorum. Veriler toplulaştırılmış şehirlerdir, bu yüzden binlerce gözlemim var.Heterosedinde veriler için r'de en az kareler nasıl ayarlanır?

Benim modelim birazcık heteroseksidir. Her gözlemin şehir nüfusu tarafından ağırlıklandırıldığı, ağırlıklı olarak en küçük kareleri çalıştırmak istiyorum. Bu durumda, gözlemlerin nüfusun karekökünün tersi ile ağırlıklandırılmasını istediğim anlamına gelir. Ancak bana göre, en iyi sözdizimi ne olurdu. Şu anda var:

Model=lm(…,weights=(1/population)) 

Bu doğru mu? Ya da olmalıdır:

Model=lm(…,weights=(1/sqrt(population))) 

(burada bu soruyu buldum. Weighted Least Squares - R ancak R ağırlıkları argümanı nasıl yorumladığını netleştirmek etmez) ?lm itibaren

+0

Nüfusun karekökünün tersi ile ağırlık vermek istiyorsanız, seçenek 2'ye göre seçenek 1 için argüman ne olurdu? – joran

+0

Sanırım bu sorunun köküdür - R, ağırlık argümanını daha fazla yorumluyor mu? –

cevap

1

soru Lucas cevaplamak için hangi olarak

, Ağırlıkları = (1/Nüfus) istediğinizi düşünüyorum.R ağırlıkların varyanslarla ters orantılı olarak parametrelenmesi, bu şekilde ağırlıkları belirtmek erro değişkeninin varlığını varsaymak anlamına gelir. r terimi, bu ortamda ortak bir varsayım olan şehrin nüfusu ile orantılıdır.

Ama varsayımı kontrol edin! Hata teriminin varyansı popülasyon büyüklüğü ile doğru orantılıysa, o zaman her kalıntının karşılık gelen örnek büyüklüğünün kareköküne bölünmesi durumunda, artıkların sabit varyansı olmalıdır. Unutmayın, rastgele bir değişkeni sabit olarak ayırarak varyansın o sabitin karesine bölünmesiyle sonuçlanır. sapmalar Sonra nüfusun kare kökler tarafından artığı bölmek

residuals = lm(..., weights = 1/population)$residuals 

tarafından regresyonun kal edinin::

standardized_residuals = residuals/sqrt(population) 

Ardından örnek varyansı arasında karşılaştırma İşte

bu şekilde kontrol edebilirsiniz Nüfus büyüklüklerinin alt yarısına tekabül eden artıklar:

Nüfus boyutları üst yarısına tekabül kalanlar arasında örnek varyans için:

variance2 = var(standardized_residuals[population > median(population)]) 

bu iki sayının, variance1 ve variance2, benzer o zaman doğru bir şey yapıyorsanız.Eğer bunlar büyük ölçüde farklıysa, belki de sizin varsayımınız ihlal edilir.

2

: "ağırlıkları: ağırlıkların isteğe bağlı vektör olmak NULL veya nümerik bir vektör olmalıdır.NULL olmayan, ağırlıkları en düşük olan kareler weights ağırlıkları ile kullanılır (yani, toplamı en aza indirir (w * e^2)), aksi takdirde sıradan en küçük kareler kullanılır. " R, ağırlık argümanının başka bir yorumunu yapmaz.

Yani, küçültmek istediğiniz şey toplamı ise (her bir noktadan kare kare 1 1/sqrt (popülasyon) karesine kadar olan mesafe o zaman ...weights=(1/sqrt(population)) olmasını istiyorsunuz. Eğer toplamı minimize etmek istiyorsanız uygun doğrunun * 1/nüfus) her noktadan mesafe o zaman ...weights=1/population istiyorum. o ... o CrossValidated için bir soru en uygun değildir!