2016-03-23 17 views
-2

Açık sorulan sorudan dolayı özür dileriz, ancak basit bir cevap var demektir! Ancakggplot2'de GLM modelleri çizme r

MOD.1<-glm(TotalAbund~TotalInv+TotalHab, data=DATA) 

şu şekildedir: Ben bir model oluşturduk

p <- ggplot(DATA, aes(x=factor(TotalInv), y=TotalAbund,colour=TotalHab)) 
p + geom_boxplot() + geom_jitter() 

: Aşağıdaki arsa yaptık

DATA <- data.frame(
TotalAbund = sample(1:10), 
TotalHab = sample(0:1), 
TotalInv = sample(c("yes", "no"), 20, replace = TRUE) 
) 
DATA$TotalHab<-as.factor(DATA$TotalHab) 
DATA 

: İşte benim verilerin nasıl göründüğünü bir örnektir Ben ham verilerden ziyade glm modelinden uyumlu değerleri sunmak istiyorum.

visreg(MOD.1) 

çok ggplot ile bunu yapmanın bir yolu var mı: Ben sadece ile visreg bunu yapabileceğini biliyorum? ,

Eğer sürekli öngorücunun olsaydı (tahmin etmek istediğiniz ilgili değerleri içeren bir "tahmin çerçevesi" oluşturma muhtemelen eşit aralıklı eklemeyi daha mantıklı olur: Teşekkürler

Böyle bir şey
+0

'ggplot2 position_dodge kullanıyor 'data.frame's ile çalışır, glm' nesneleri değil. Öyleyse hayır, doğrudan bir 'glm' nesnesi olarak alan bir arsa çoğaltamazsınız. Ama basit bir veri manipülasyonu ile ggplot'ta dilediğiniz her şeyi kolayca yapabilirsiniz. –

+0

Unutmayın, lütfen istediğiniz çıktıyı verin –

+0

Merhaba Alex, yukarıda en az bir veri kümesi ekledim. İlk kez bunu yapmaya çalıştım, umarım işe yarar. :) –

cevap

1

yapabileceğini değerleri, örneğin seq(min(cont_pred),max(cont_pred),length=51))

pframe <- with(DATA, 
     expand.grid(TotalInv=unique(TotalInv), 
        TotalHab=unique(TotalHab))) 

kullanımı tahmin edilen değerler doldurmak için predict yöntemi:

pframe$TotalAbund <- predict(MOD.1,newdata=pframe) 

Grafiğe bir katman ekleyin. Sadece can sıkıcı kısmı (... Ben burada gg1 gibi varolan arsa kaydettikten olduğunu varsayarak) ... çubukların genişliklerini eşleşmesi için manuel büküverilmiş genişlikte

gg1 + geom_point(data=pframe,size=8,shape=16,alpha=0.7, 
       position=position_dodge(width=0.75)) 
+0

Harika, işe yaramış gibi görünüyor. Log-linear modeli kullanıyorum, y eksenini üslenmiş değerleri göstermek için dönüştürmek mümkün mü? Ve puanlara% 95 güven aralığını nasıl ekleyebilirim? Üzgünüm, tüm sorular için. Sadece bu komployu bilmiyorum, bu yüzden kafa karıştırıcı buluyorum. Tüm yardımlarınız için teşekkürler! –

+1

Muhtemelen başka bir soru sormalısınız, buna bağlamanız gerekir ... bazı ipuçları (eğer kendiniz bulmak istiyorsanız); y ekseni ölçeklendirmesi yapmanın bir yolu için scale_y_log10() 'a bakın; CIs için '? predict.lm' deneyin ve" aralık "argümanını arayın ... –

+0

Eğer sorunuza cevap verdiyse, onaylamak için onay işaretini tıklamanız önerilir ... –