2017-03-08 29 views
5

ggplot2にQ-Qプロットを得るより便利な方法を探しています。ここでは、データセット全体について分位数が計算されます。データのグループにはマッピング(色/図形)を使用できます。ggplot2 :: stat_qq、色、単一グループのQ-Qプロット

library(dplyr) 
library(ggplot2) 
library(broom) ## for augment() 

いくつかのデータをメイク:

set.seed(1001) 
N <- 1000 
G <- 10 
dd <- data_frame(x=runif(N), 
      f=factor(sample(1:G,size=N,replace=TRUE)), 
      y=rnorm(N)+2*x+as.numeric(f)) 
m1 <- lm(y~x,data=dd) 
dda <- cbind(augment(m1),f=dd$f) 

基本プロット:

ggplot(dda)+stat_qq(aes(sample=.resid)) 

enter image description here

を私は色を追加しようとした場合、グループは(クォン計算に分けます私は望んでいない):

ggplot(dda)+stat_qq(aes(sample=y,colour=f)) 

enter image description here

私はstat_qq(aes(sample=y,colour=f,group=1)) ggplotを使用する場合は色指定を無視し、私は最初のプロットを取り戻します。

ポイントが最初のケースのように配置され、2番目のケースのように色付けされたプロットが必要です。私は、私が投稿することができますが、よりよい何かを探していますqqnormベースのマニュアルソリューション...

答えて

2

あなたは分位数を自分で計算して、geom_pointを使用してプロットできがあります

dda = cbind(dda, setNames(qqnorm(dda$.resid, plot.it=FALSE), c("Theoretical", "Sample"))) 

ggplot(dda) + 
    geom_point(aes(x=Theoretical, y=Sample, colour=f)) 

enter image description here

あああなたの質問の最後まで読んでいたはずです。これはあなたが指していた手動解決策ですよね?

my_stat_qq = function(data, colour.var) { 

    data=cbind(data, setNames(qqnorm(data$.resid, plot.it=FALSE), c("Theoretical", "Sample"))) 

    ggplot(data) + 
    geom_point(aes_string(x="Theoretical", y="Sample", colour=colour.var)) 

} 

my_stat_qq(dda, "f") 
+0

はい、これは私が参照していた手動ソリューションです(あなたのものは私のものよりやや優れています)。 –

関連する問題