我試圖用ggplot2生成一些示例圖形,我選擇的其中一個示例是birthday problem,這裏使用Oscon的Revolution computing presentation中的代碼'借來的'。在ggplot2中添加指數geom_smooth
birthday<-function(n){
ntests<-1000
pop<-1:365
anydup<-function(i){
any(duplicated(sample(pop,n,replace=TRUE)))
}
sum(sapply(seq(ntests), anydup))/ntests
}
x<-data.frame(x=rep(1:100, each=5))
x<-ddply(x, .(x), function(df) {return(data.frame(x=df$x, prob=birthday(df$x)))})
birthdayplot<-ggplot(x, aes(x, prob))+
geom_point()+geom_smooth()+
theme_bw()+
opts(title = "Probability that at least two people share a birthday in a random group")+
labs(x="Size of Group", y="Probability")
在這裏,我的圖形是我將描述爲指數,但geom_smooth不適合數據特別好。我嘗試了黃土方法,但這並沒有改變很多。任何人都可以建議如何添加更好的光滑?
感謝
保羅。
曲線並不是真的邏輯,即使它是S形的。你可以在原始圖 – Aniko 2010-08-20 13:48:30
hm右邊的'scale_y_logit()'看到它。我不確定那時適當的迴歸是什麼,但擁有原始數據仍然可以讓你用'stat_smooth()'符合那條線。 – JoFrhwld 2010-08-20 14:46:27