Как стать автором
Обновить

Комментарии 33

Отлично написано, но маленькие придирки:

1. «квадрат разности всех членов генеральной совокупности и среднего значения» я бы заменил на «сумма квадратов разностей каждого члена генеральной совокупности и среднего значения».

Потому что «разность всех членов и среднего значения» звучит как «разность суммы всех членов и среднего значения», что не верно.

2. Линии нельзя возвести в квадрат. Можно возвести в квадрат «длины отрезков».
Спасибо, поправил.
Буквально только что страдал этим вопросом (надо было сравнить результаты двух тестов — «похоже или нет» методом гадания на медиане и stddev).

Угадайте, можно ли это сравнивать с использованием методов для нормального распределения:



(Пока что думаю про использование теста Колмогорова-Смирнова).

Сравнивать-то что? Тип распределения? Моменты?

Надо ответить на вопрос «достаточно ли хороша bad по сравнению с good». Вот слово «хороша» открыто для интерпретации, но этот график показывает, что тупо сравнив avg или медиану, внятного ответа не получишь.
НЛО прилетело и опубликовало эту надпись здесь
Я пробовал. Но почему 99 персентиль? Я понимаю, что можно сказать «так написано в SLA», но если пишешь SLA, то почему 99% персентиль, а не 99.9% или даже max?

Более того, я могу представить себе два устройства, у которых персентиль будет одинаковым, а mean различаться раз в 10.
НЛО прилетело и опубликовало эту надпись здесь
У меня на самом деле задача была (вначале) проще: дано mean и stddev образца, mean и stddev кандидата, надо было ответить, различаются ли они (т.е. есть ли статистически значимая разница между результатами). Попытка потрогать это осиное гнездо оставила меня в полной уверенности, что этого сделать нельзя. Придётся на глазок придумывать критерии, хотя хотелось «как лучше».

Скорее вопрос в слове "достаточно". Методом "быстрой интерпретации", как ниже писали, и так понятно, что у bad есть некая статистически показательная причина задержек (даже 2), которая отсутствует для good. Также можно поставить вопросы к методике эксперимента. Сколько случайно выбранных по времени запусков каждой серии, на каких стендах. Визуально как будто по одному запуску было.

Это разные устройства. У одного такой профиль производительности, у другого другой.

Кстати, у good эти (вторичные) пики тоже есть, просто они поджаты к основному.

Дополнительные пики первого я назвал "статистически непоказательными" :).
Для корректного сравнения разных устройств требуется исключить все факторы, кроме этой разницы (путём серий экспериментов в разных условиях).
Меня смущают качественные различия распределений. Сумма 3х аккуратных ситуаций у bad и каша у good. Есть уверенность, что это именно свойства дисков?

Да, потому что тест Колмогорова-Смирнова для устройств одной серии в разных серверах утверждает, что D > 0.3 (при crit (0.01)=0.02) и p=0.8. (Я знаю, что KS нельзя использовать для подтверждения null-hypothesis, но это лучшее, что у меня есть).

Дело в том, что сами устройства внутри — это компьютеры с фирмварью (все SSD такие), и разные алгоритмы дают разные результаты.

(Я как-то с одним вендором ругался, и они апдейтом фирмвари latency в 4 раза снизили).
А зачем вообще Смирнова делать, если у вас выборка такая здоровенная. Тут же миллионы. По идее и глазом будет видно, одинаковые распределения или нет. Если они глазом расходятся — значит, разные распределения. Т.е. good и bad вообще бессмысленно сравнивать.

>>KS нельзя использовать для подтверждения null-hypothesis
Как это нельзя. А для чего он нужен тогда? :) Или я не понял чего-то?

Про критерий — я бы в этой ситуации взял бы не плотность, а вероятность того, задержка не превысит некий нужный порог. Тут хорошие и показательные графики могут быть.

А как порог рассчитать? Из «необходимо» или из свойств кривой?

Всегда в итоге приходишь к субъективному "необходимо". Уровень значимости тот же. В данном случае получится что-то вроде "в 20% случаев у второго задержка выше в 3 раза".

Выглядит так, словно Bad группа на самом деле 2 или три отдельных кластера. Такая фигня обычно бывает, когда в изначальную выборку напихиваешь разнородные элементы.
Удивительно, но нет. Это одинокая SSD.

А что измерял?

Написано же на графике — latency. Если параметры теста интересны, вот они: fio --name `hostname` --blocksize=4k --ioengine=libaio --iodepth=32 --direct=1 --buffered=0 --fsync=0 --rw=randwrite --filename=/test --runtime=900 --time_based=1 --invalidate=1 --output-format=json
Хм. Тем не менее напрашивается предположение о попадании в ячейки с разной latency или в разные циклы работы контроллера. То есть в каждом измерении явно в фоне присутствует некое дискретное состояние железа. Условно «свободный кэш» и «кэш исчерпался». Или «доступ к медленному чипу» и «доступ к быстрому чипу»
Чем график рисовал? Похоже на seaborn, но цвета интереснее. Или это R?

Да, примерно так и есть. (Надо понимать, что это график вероятностей, а не хронологический график).


Рисовалось в R по советам коллег (я не сварщик, только маску нашёл).


graf <- function (path1, path2, name1, name2){
    sample1=fromJSON(file=path1)
    sample2=fromJSON(file=path2)
    return(ggplot(rbind(data.frame(latency=sample1,category=name1), data.frame(latency=sample2, category=name2)), aes(latency, fill=category)) + geom_density(alpha=0.2) + scale_x_continuous(trans='log2'))
}

На вход нужен вывод и fio, который процессится вот так вот (берётся lat_log), силами ansible и шелла:


   - name: Fetching results
     shell: "shuf -n 10000 lat_clat.1.log|awk '{print $2}'|awk -F, '{print $1}'"
     register: latency_log
   - copy:
      content: '{{ latency_log.stdout_lines|to_json|from_json|map("int")|list|to_json }}'
      dest: '{{ latency_dest }}'
     delegate_to: localhost
     vars:
       latency_dest: 'output/latency_{{ inventory_hostname }}.json'
Негодование автора по этой теме понятно, но стоит всё же сделать оговорку.

Иногда вот просто сейчас нужен ответ, и нет времени на длинные теоретические разбирательства, а готовый способ дать быстрый ответ — есть. Да, он не гарантирует быть правильным (хотя и может таковым оказаться), а ещё он может оказаться совсем неправильным (не повезёт). Но такой ответ всё равно лучше чем ничего, особенно если риск его неверности вы держите в голове (но это не обязательно, если другого выхода у вас всё равно нет).

Это конечно не относится к написанию научных статей (там всегда много времени и не может быть реальной критической срочности).

Быстрый ответ можно дать и без стьюдента. "Вроде похожи". :) При достаточном количестве выборок можно ошибку среднего оценить, это тоже быстро..

Если вы получаете ответ не по методике, обычно вы не можете оценить каков процент ошибки
И вообще это превращается не в научный метод, а в субъективное мнение эксперта
Хотелось бы лучше понимать значимость
Если мы берем 5%, это значит результат каждого двадцатого исследования можно выкидывать в мусорку?
Если нет, то какой процент исследований в среднем даст неправильный результат при использовании значимости 5%? А 1%?
Значимость — это вероятность того, что числа скажут «наше предположение неверно», но это будет не так. В целом можно сказать, что при бесконечно большом количестве выборок 5% будут говорить «гипотеза не верна», но только в том случае, если она верна.
Чего мы, естественно, не знаем. Так что привязывать качество исследований к значимости не стоит.
Еще непонятно про равенство дисперсий
Если мы тестируем, отличается ли подбрасывание монетки в Москве от подбрасывания в Париже
Выбираем значимость
Получаем 52/100 орлов в Москве, 49/100 в Париже
как тут могут быть равны дисперсии
А если не равны, то нельзя применять метод?
Дисперсию чего мы здесь измеряем? Если одного подбрасывания, то она в обоих случаях будет равной (и равной 1/4), если серии из ста подбрасываний, то надо провести много таких серий в Москве и в Париже и рассматривать количество орлов как случайную величину. Тут требуется что-то пояснить более развёрнуто, или направление мысли уже понятно?
Строго говоря, эксперимент с подбрасыванием монетки характеризуется другим видом распределения, довольно далёким от нормального, и нужно чётко представлять себе, что является измеряемой величиной. Если результат каждого отдельного эксперимента в серии — «орёл» или «решка», то это дискретное распределение, и сравнение двух величин, имеющих дискретное распределение, нельзя делать с помощью параметрического теста (хотя дисперсии для них тоже можно вычислить, но не будет смысла сравнивать их описанным в статье способом). Если же результат эксперимента — это числа вида «52 из 100» и «49 из 100», то у нас тут только две точки, которые можно сравнить между собой непосредственно, без применения статистических методов.
Дисперсия в обоих случаях, естественно, будет разной, но очень близкой к 0,25. И как раз эту естественную для выборочной дисперсии разницу и можно оценить с точки зрения значимости, взяв в качестве гипотезы предположение, что дисперсии генеральных совокупностей этих выборок равны.

Люди читают ваше плохо сформулированное "к распределению, отличному от нормального, нельзя применять параметрические критерии анализа, вроде Стьюдента" и думают, что речь идёт про распределение самих выборок, даже если они большие. Хотя для t-критерия важно нормальное распределение выборочных средних.

Vsevo10d, исправьте, пожалуйста.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории