2016-08-26 88 views
0

我想在r做一個KS陰謀,似乎都進展順利 - 除了我只能使用顏色來可視化兩個不同的樣本,而不是線型的事實。kolmogorov-smirnov在R的陰謀ggplot

我曾嘗試以下:

sample1<-SD13009 
sample2<-SD13009PB 

group <- c(rep("sample1", length(sample1)), rep("sample2", length(sample2))) 
dat <- data.frame(KSD = c(sample1,sample2), group = group) 
cdf1 <- ecdf(sample1) 
cdf2 <- ecdf(sample2) 

minMax <- seq(min(sample1, sample2), max(sample1, sample2), length.out=length(sample1)) 
x0 <- minMax[which(abs(cdf1(minMax) - cdf2(minMax)) == max(abs(cdf1(minMax) - cdf2(minMax))))] 
y0 <- cdf1(x0) 
y1 <- cdf2(x0) 

#attempt 1

plot<-ggplot(dat, aes(x = KSD, group = group, colour = group, linetype=group))+ 
    stat_ecdf(size=1) + 
    mytheme + xlab("mm") +scale_x_continuous(limits=c(0,1))+ 
    ylab("Cumulitive Distibution") + 
    #geom_line(aes(group=group,size=1)) + 
    geom_segment(aes(x = x0[1], y = y0[1], xend = x0[1], yend = y1[1]), 
     linetype = "dashed", color = "red") + 
    geom_point(aes(x = x0[1] , y= y0[1]), color="red", size=1) + 
    geom_point(aes(x = x0[1] , y= y1[1]), color="red", size=1) + 
    ggtitle("K-S Test: Sample 1/Sample 2") 

#attempt 2

cdf <- ggplot(dat, aes(x=KSD, group=group,linetype=group)) + stat_ecdf(aes(linetype=group)) + coord_cartesian(xlim = c(0, 0.8)) + geom_segment(aes(x = x0[1], y = y0[1], xend = x0[1], yend = y1[1]), 
      linetype = "dashed", color = "red") + 
     geom_point(aes(x = x0[1] , y= y0[1]), color="red", size=1) + 
     geom_point(aes(x = x0[1] , y= y1[1]), color="red", size=1) + 
     ggtitle("K-S Test: Sample 1/Sample 2") 

這就是我得到:

enter image description here

+0

它會出現你正在映射組到線型。什麼是mytheme? –

回答

3

我無法重現此,用下面的代碼:

# Make two random samples 
sample1<-rnorm(1000) 
sample2<-rnorm(1000, 2, 2) 

group <- c(rep("sample1", length(sample1)), rep("sample2", length(sample2))) 
dat <- data.frame(KSD = c(sample1,sample2), group = group) 
cdf1 <- ecdf(sample1) 
cdf2 <- ecdf(sample2) 

minMax <- seq(min(sample1, sample2), max(sample1, sample2), length.out=length(sample1)) 
x0 <- minMax[which(abs(cdf1(minMax) - cdf2(minMax)) == max(abs(cdf1(minMax) - cdf2(minMax))))] 
y0 <- cdf1(x0) 
y1 <- cdf2(x0) 


ggplot(dat, aes(x = KSD, group = group, colour = group, linetype=group))+ 
    stat_ecdf(size=1) + 
    xlab("mm") + 
    ylab("Cumulitive Distibution") + 
    geom_segment(aes(x = x0[1], y = y0[1], xend = x0[1], yend = y1[1]), 
       linetype = "dashed", color = "red") + 
    geom_point(aes(x = x0[1] , y= y0[1]), color="red", size=1) + 
    geom_point(aes(x = x0[1] , y= y1[1]), color="red", size=1) + 
    ggtitle("K-S Test: Sample 1/Sample 2") 

enter image description here

看來,在你的情節線非常接近,你不能看到,他們是不同的線型,但他們是。