2012-03-05 41 views
2

文本位置i上已經產生從這個問題的曲線圖相同的曲線圖

plot multiple columns on the same graph in R

其中包括在其迴歸線沿着在同一圖上多個變量。

我也有公式和R2,但我不知道如何把它放在圖上。

ddply(d, "variable", function(u) { 
    r <- lm(value ~ Xax, data=u); 
    c(coef(r), r.squared=summary(r)$r.squared) }) 

這也是在同樣的問題發現

現在我想要生成的迴歸方程和R2值,並將其放置在圖上爲每個變量(例如放置在左側的方程和R2或每條直線的右邊)

這是怎麼做到的?

謝謝

+1

[這](http://stackoverflow.com/q/7549694/324364)應該讓你開始(和可以說是重複的)。將每條「每條線」放在「靠近」的地方都很難以自動化的方式明智地做到。你將有更多的運氣直接指定座標。 – joran 2012-03-05 15:50:34

+0

謝謝,但如何從這個方程中得出錯誤?是R2還是其他變量? – ifreak 2012-03-05 16:37:14

+0

你的問題只提到係數和R^2值。我不知道你的意思是「錯誤」。 – joran 2012-03-05 16:40:54

回答

2

這是一種可能性,使用@Vincent's code。它適用於ggplot2(v。0.9)和directlabels(v。2.5)的R-forge版本的最新版本。我也用ggplot2 0.8.9directlabels 2.4測試了代碼。 (CRAN上釋放的directlabels版本不會與ggplot2 0.9工作,雖然。)

的想法基本上是更換您的標籤ABCG與迴歸方程。當然,你可以用不同的方式存儲後者,但我認爲這會明顯地使情節表達複雜化,所以讓我們儘可能簡單。假設我們已經有@文森特的熔化的變量d

> head(d) 
    Xax variable value 
1 0.22  A 0.451 
2 0.34  A 0.491 
3 0.54  A 0.389 
4 0.34  A 0.425 
5 0.53  A 0.457 
6 0.12  A 0.436 

讓我們更換variable標籤,你計算的公式:

library(plyr) 
lm.stats <- ddply(d, "variable", 
        function(u) { 
        r <- lm(value ~ Xax, data=u) 
        c(coef(r), r.squared=summary(r)$r.squared) 
        }) 
my.formatter <- function(x, digits=2) { 
    x <- round(x, digits=digits) 
    out <- paste(x[1], ifelse(x[2]>0, "+", ""), x[2], "x", sep="") 
    out <- paste(out, " (R2=", x[3], ")", sep="") 
    return(out) 
} 
d$variablef <- d$variable 
levels(d$variablef) <- apply(lm.stats[2:4], 1, my.formatter) 

的小助手功能,my.formatter,負責組裝不同的統計你的用ddply計算。請注意,如果我們需要後者,我提供了variable的副本。這裏是繪圖的東西:

p <- ggplot(d, aes(Xax,value, col=variablef)) + 
     geom_point() + 
     stat_smooth(method=lm) 
library(directlabels) 
direct.label(p) 

我要指出,你也可以有註釋的曲線從Hmisclabcurve()功能。我也可以想象使用ggplot或lattice的更簡單的解決方案,即只需在迴歸線上編寫回歸方程,並在x軸上進行適當的定向和輕微移動以避免重疊,但如果您的數據集發生則可能不會很便於移植改變。

enter image description here

+0

謝謝你的回答,我試過了,但是我有一個錯誤: Direct.label.ggplot(p)錯誤:找不到函數「指南」 – ifreak 2012-03-06 09:02:01

+0

@ifreak你是什麼版本的ggplot2和directlabels使用?使用ggplot2 0.8.9和directlabels 2.4(x86_64-apple-darwin9.8.0/x86_64上的R 2.14.1)對上述進行了測試。 – chl 2012-03-06 11:31:08

+0

我有ggplot2 0.9.8和直接標籤我有我今天下載的最新版本。和R 2.11 on fedora – ifreak 2012-03-06 11:43:44