Skip to content

Instantly share code, notes, and snippets.

@direvius
Created December 20, 2012 11:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save direvius/4344710 to your computer and use it in GitHub Desktop.
Save direvius/4344710 to your computer and use it in GitHub Desktop.
# Скрипт предназначен для сравнения квантилей двух стрельб
# В результате его выполнения получаем график, по горизонтальной
# оси -- квантили первой стрельбы, по вертикальной -- на сколько
# (в процентах) от них отличаются соответствующие квантили второй
# стрельбы
# Загружаем данные из PHOUT:
data1 <- read.delim("./test1.phout", header=F)
data2 <- read.delim("./test2.phout", header=F)
# Нужные нам тайминги находятся в столбце V3 и записаны в микросекундах.
# Извлекаем столбец V3 и переводим в миллисекунды:
t1 <- data1$V3/1000
t2 <- data2$V3/1000
# Рассчитываем квантили для первой стрельбы (1000 штук):
q1 = quantile(t1, (0:1000)/1000)
# Рассчитываем квантили для второй стрельбы и считаем относительное отличие:
q2 = quantile(t2, (0:1000)/1000)/q1*100 -100
# Устанавливаем пределы для графика по оси Y
# По умолчанию -- от -500 до 500:
maxy = 500
miny = -500
# Если данные выходят за границы этого диапазона, расширяем границы:
if(max(q2) < 500) maxy = max(q2)
if(min(q2) > -500) miny = min(q2)
# Строим график
plot(q1,q2,col="darkred",main="Q-Q график",cex=0.2, xlab="Процентили, мс\n(старая)", ylab="Относительное отличие, % (новая)", log="x", ylim=c(miny,maxy))
# Расчитываем децили (10%, 20% итд квантили):
d1 = quantile(t1, (0:10)/10)
d2 = quantile(t2, (0:10)/10)/d1*100 - 100
# И выделяем их на графике
points(d1,d2, col="blue")
# Строим линии уровня (просто горизонтальные линии)
# Вероятно, это можно было сделать просто настройкой отображения графика
abline(0,0)
for(i in 1:50) {
abline((i/10)*100,0, col="darkred", lty="dashed")
abline(-(i/10)*100,0, col="darkgreen", lty="dashed")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment