участок Колмогорова-Смирнова в Рггучасток

Я пытаюсь сделать график KS в r, и все, кажется, идет хорошо, за исключением того факта, что я могу использовать только цвет для визуализации двух разных образцов, а не типа линии.

Я пробовал следующее:

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) 

# попытка 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")

# попытка 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")

Вот что я получаю:

введите здесь описание изображения


person Kerri Colman    schedule 26.08.2016    source источник
comment
Похоже, вы сопоставляете группу с типом линии. Что такое mytheme?   -  person Roman Luštrik    schedule 26.08.2016


Ответы (1)


Я не могу воспроизвести это со следующим кодом:

# 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")

введите описание изображения здесь

Кажется, что на вашем графике линии расположены так близко друг к другу, что вы не видите, что это разные типы линий, но это так.

person Axeman    schedule 26.08.2016