Soru:
Katsayıyı kategorik değişkenlerle doğrusal regresyon modelinde yorumlama
Sverre
2011-07-22 03:12:18 UTC
view on stackexchange narkive permalink

Örneklerimi R çağrılarıyla vereceğim. İlk olarak, bağımlı değişken 'ömür' ve iki sürekli açıklayıcı değişken ile doğrusal bir regresyonun basit bir örneği.

  data.frame (yükseklik = runif (4000,160,200)) - >human.lifehuman. ömür $ ağırlık = runif (4000,50,120) insan.life $ ömür = örnek (45: 90,4000, değiştir = DOĞRU) özet (lm (ömür ~ 1 + boy + ağırlık, veri = insan.yaşam)) Çağrı: lm (formül = ömür ~ 1 + boy + ağırlık, veri = insan ömrü) Kalıntılar: Min 1Q Medyan 3Q Maks -23.0257 -11.9124 -0.0565 11.3755 23.8591 Katsayılar: Tahmini Std. Hata t değeri Pr (> | t |) (Kesişme) 63.635709 3.486426 18.252 <2e-16 *** yükseklik 0.007485 0.018665 0.401 0.6884 ağırlık 0.024544 0.010428 2.354 0.0186 * --- Signif. kodlar: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 '' 1 Kalan standart hata: 3997 serbestlik derecesinde 13.41 Çoklu R kare: 0.001425, Düzeltilmiş R-kare: 0.0009257 F-istatistik : 2 ve 3997 DF'de 2.853, p değeri: 0.05781  

'Ağırlık' değeri 1 olduğunda 'yaşam süresi' tahminini bulmak için (Kesişme) + height = 63.64319

Şimdi ya benzer bir veri çerçevem ​​varsa, ancak açıklayıcı değişkenlerden birinin kategorik olduğu bir veri çerçevesine sahipsem?

  data.frame (animal = rep (c ("köpek", "tilki", "domuz", "kurt"), 1000)) - >animal.lifeanimal.life $ ağırlık = runif (4000,8,50) hayvan.life $ ömür = örnek (1:10, değiştirin = DOĞRU) özeti (lm (ömür ~ 1 + hayvan + ağırlık, veri = hayvan.yaşam)) Çağrı: lm (formül = ömür ~ 1 + hayvan + ağırlık, veri = hayvan.yaş) Kalıntılar: Min. -4.7677 -2.7796 -0.1025 3.1972 4.3691 Katsayılar: Tahmin Std. Hata t değeri Pr (> | t |) (Kesişme) 5.565556 0.145851 38.159 < 2e-16 *** animalfox 0.806634 0.131198 6.148 8.6e-10 *** animalpig 0.010635 0.131259 0.081 0.9354 hayvan kurdu 0.806650 0.131198 *** 8.6e-10 ağırlık 0,007946 0,003815 2,083 0,0373 *
--- Signif. kodlar: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 '' 1 Kalan standart hata: 3995 serbestlik derecesinde 2.933 Çoklu R kare: 0.01933, Düzeltilmiş R-kare: 0.01835 F-istatistiği : 4 ve 3995 DF'de 19.69, p-değeri: 4.625e-16  

Bu durumda, "ağırlık" değeri 1 olduğunda "yaşam süresi" tahminini bulmak için 'Animal' için katsayıların her birini kesişme noktasına ekliyorum: (Intercept) + animalfox + animalpig + animalwolf? Veya bunu yapmanın doğru yolu nedir?

ThanksSverre

Dolar işaretleri bir denklem ortamına girmenizi sağlar ve bu yüzden işler rastgele italik hale gelir.
formatlama: "kodu" elde etmek için 4 boşluk girintisi yapın.
4 boşluk girintisini kullanırsanız, oraya yıldız ve dolar işareti koyabilirsiniz ve bunlar görünecektir. bunları kod biçimlendirmesinin dışında kullanırsanız, biçimlendirme olarak değerlendirilecektir. Tam bir "kod" satırı istemiyorsanız, geri işaretlerini kullanın: "bu, $ ve *" içeren koddur
Tekrarlanabilir bir örnek kullanmış olmanız iyi. Rastgele sayı üretmeden önce `` set.seed (1) '' (veya istediğiniz sayıyı) ekleyerek örneği daha da iyi hale getirebilirsiniz, böylece herkes sizinle tam olarak aynı sonuçları alır (bu durumda çok önemli değil, rağmen).
Sadece iki küçük yorum. "Ağırlık" değeri 1 olduğunda "yaşam süresi" tahminini bulmak için (Kesişme) + yükseklik = 63.64319 ekliyorum "yazdınız. Bunun, ağırlık = 1 ** ve boy = 0 ** olduğunda tahmini ortalama ömür olduğunu unutmayın. Bu muhtemelen pek anlamlı değil. Ayrıca, bağımsız değişkenlerin gözlemlenen değerlerinin aralığı dışındaki tahminler dikkatli bir şekilde ele alınmalıdır (ağırlık 50 ile 120 arasındadır, dolayısıyla ağırlık = 1 de çok anlamlı değildir). Sadece bazı yan notlar ve muhtemelen zaten bildiğiniz şeyler. Ama sadece durumda ...
Wolfgang: Bu noktaların farkındayım, ancak önemli oldukları için yine de bunları belirtmenin bir zararı olmaz! :) [ayrıca bu konuyu okuyanların farkında olmaması durumunda]
üç yanıtlar:
#1
+12
Macro
2011-07-22 03:30:40 UTC
view on stackexchange narkive permalink

Hayır, tüm katsayıları birbirine eklememelisiniz. Aslında modeliniz var

$$ {\ rm lifespan} = \ beta_ {0} + \ beta_ {1} \ cdot {\ rm fox} + \ beta_ {2} \ cdot {\ rm pig } + \ beta_ {3} \ cdot {\ rm wolf} + \ beta_ {4} \ cdot {\ rm weight} + \ varepsilon $$

burada, örneğin, $ {\ rm domuz} = Hayvan bir domuzsa 1 $ ve aksi takdirde 0. Yani, $ \ beta_ {0} + \ beta_ {1} + \ beta_ {2} + \ beta_ {3} + \ beta_ {4} $ 'ı hesaplamak için, $ {\ rm weight} = 1 $, "eğer bir domuz, kurt ve tilki olsaydınız ve kilonuz 1 olsaydı, beklenen yaşam süreniz nedir?" demek gibidir. Açıkça görülüyor ki, her hayvan bunlardan sadece biri olduğu için bu pek mantıklı değil.

Bunu her hayvan için ayrı ayrı yapmanız gerekecek. Örneğin, ağırlığı 1 olan bir domuz için $ \ beta_ {0} + \ beta_ {2} + \ beta_ {4} $ beklenen yaşam süresidir.

Makro: Anlıyorum. Öyleyse, "hayvan" daki seviyeler için ortalama katsayıyı bulmak mantıklı olur mu? Diğer bir deyişle (Intercept) + (animalfox + animalpig + animalwolf) / 3 yapın. Yoksa bu, yalnızca veri setindeki her hayvan için eşit sayıda gözlem olduğunda geçerli mi?
Sanırım haklısın - bu sadece her grupta eşit sayıda varsa geçerli olur. Tek bir sayı halinde özetlemekte ısrar ederseniz, bunları örneklemde her grubun ne kadar ağır temsil edildiğiyle orantılı olarak ağırlıklandırabilirsiniz.
Bunları ağırlıklandırmanın doğru yolu nedir? Onu tek bir sayıya özetlemekte "ısrar etmemin" nedeni, bir dağılım grafiğindeki değişkenlerden yalnızca biri için regresyon doğrusunu çizmek istememdir. Örneğin, yukarıdaki human.life örneğinde, çizginin kesişim noktasını ((Intercept) + height = 63.64319) katsayısı (0.024544) ile belirterek 'ağırlık' için regresyon çizgisini çizerdim. Animal.life durumunda bu biraz daha zor.
Bunun hakkında daha fazla düşündüğümde, herhangi bir ortalama nasıl yorumlanabilir bilmiyorum. Bir arsa üzerine üç paralel regresyon çizgisi çizebilirsin, değil mi? Ayrıca bana öyle geliyor ki "ağırlık" etkisi her hayvan için farklı olacak, bu durumda hayvanın ağırlık ile etkileşime girmesi gerekir, bu da her hayvan için tamamen farklı üç gerileme çizgisine yol açar.
Ancak 'hayvan' değişkeninin ve 'ağırlık' değişkeninin her ikisinin de önemli olduğu, ancak etkileşimlerinin olmadığı bir durumda, etkileşimi modele dahil etmem. Çoklu regresyon, 'hayvan' için değerin ne olduğundan bağımsız olarak 'ağırlığın' etkisini tahmin eder.
#2
+4
Greg Snow
2011-07-22 20:30:26 UTC
view on stackexchange narkive permalink

Yapılacak en basit şey, lm nesnesinde tahmin işlevini kullanmaktır, ardından bir faktörü bir araya getirmek için doğru değerlere dönüştürmek gibi birçok ayrıntıyla ilgilenir. Tahmine giren parçaları anlamaya çalışıyorsanız, type = 'terms' belirleyin ve bu, tahmininizi yapan bir araya gelen parçaları gösterecektir.

Ayrıca not edin. Bir faktörün değişkenlere nasıl dönüştürüleceğinin bazı seçeneklere bağlı olduğunu, varsayılanın diğer gruplarla karşılaştırmak için bir temel grup seçeceğini, ancak bunu bir ortalamaya ve bu ortalamadan (veya diğer ilgili karşılaştırmalardan) farklılıklara da ayarlayabilirsiniz.

Predikt.lm () kullanmak, bir lm nesnesi için iyi bir çözümdür. Ne yazık ki, aslında verilerime bir lmer nesnesi uyduruyorum, bunun için tek tek terimleri çıkaran hiçbir tahmin () işlevi mevcut değil. bir taban çizgisi (tüm sürekli öngörücülerin 0'a ayarlandığı ve kategorik öngörücülerin bir değerinin seçildiği)? Öyleyse, bunu nasıl yapacağımı bilmek isterim. O zaman modelin kesişme noktası + tahmin edicimin katsayısı olarak regresyon çizgimi çizebilirim.
"Kontrastlara", "C", "kontr.sum" a ve seçeneklerin bir parçası olan kontrastlara bakın.
#3
+2
Peter Flom
2011-07-22 15:55:54 UTC
view on stackexchange narkive permalink

Ağırlığın 1 olduğu ortalama yaşam süresini istiyorsanız, bu görüşmede "hayvanı" çıkarmanız yeterli:

  lm (formül = ömür ~ 1 + hayvan + ağırlık, veri = animal.life)  
Bunun nasıl doğru olabileceğini anlamıyorum. Tahmincilerden birini ('hayvan') çıkarırsam, kesişme, 'ağırlık' katsayısı ve hata tahminleri tüm değişir. Ayrıca, verilerdeki ağırlık 1 için gerçek ortalama yaşam süresinin ne olduğunu bulmaya çalışmıyorum, modelin ne olması gerektiğini öngördüğü.


Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...