Автоматизация
Apr. 14th, 2017 09:53 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
-- Девочки, вы, конечно, всё красиво нарисовали, но утверждать что "данные стремятся к нормальному t-распределению" -- это немножко голословно. В общем, так: переделайте мне их в гистограммы и наложите поверх соответствующую гауссовую кривую. Ладно? Ну вот и договорились :)

Девочки (Наташка с Рутой) разве не в слезах ушли. Во-первых графиков тридцать. Во вторых -- а как в excel наложить на график гауссиану? Точнее, даже не в excel (там есть для этого платный плагин), а в libreoffice?

Девочки (Наташка с Рутой) разве не в слезах ушли. Во-первых графиков тридцать. Во вторых -- а как в excel наложить на график гауссиану? Точнее, даже не в excel (там есть для этого платный плагин), а в libreoffice?
Переделать график в гистограмму -- просто, хоть и трудоёмко. Про это я не буду, примем как данность промежуточный результат.

А вот наложить поверх рисунок -- засада. Никак. Из инструментов у libreoffice есть только кривые Безье. Вы пробовали нарисовать гауссов колокольчик мышкой от руки? Хорошо, что есть калькулятор:
Ключ к решению, конечно, xdotool. Скрипт запускается с задержкой в семь секунд, за это время надо переключится в окно либр-калка, выбрать диаграммку, схватить в руки кривую Безье (типа карандаш) и ждать. А дальше включается в работу скрипт, нажимает мышку, ведёт её недрогнувшей рукой и отпускает. :). Вот что получилось:


А вот наложить поверх рисунок -- засада. Никак. Из инструментов у libreoffice есть только кривые Безье. Вы пробовали нарисовать гауссов колокольчик мышкой от руки? Хорошо, что есть калькулятор:
#!/usr/bin/calc -p -f # dryrun = 0; maxx = 570; maxy = 400; off = 0.075; left = -1 - off/2; right = 0.5 + off/2; mu = -0.19; sigma = 0.189; dx = 4; define g(x) = 1 / (sigma * sqrt(2 * pi())) * exp(-1/2 * ((x - mu) / sigma) ^ 2); curr_y = round(g(left) * maxy * sigma); system(strprintf("xdotool mousemove_relative -- %d %d", 0, -curr_y)); if (!dryrun) { system("xdotool mousedown 1"); for(x = 0; x < maxx; x += dx) { xx = (x / maxx) * (right - left) + left; y = round(g(xx) * maxy * sigma); dy = curr_y - y; curr_y = y; system(strprintf("xdotool mousemove_relative -- %d %d", dx, dy)); } system("xdotool mouseup 1"); system("xdotool click 3"); system("xdotool key i"); } printf("Top at %.3f\n", 25 * g(mu) * off);
Ключ к решению, конечно, xdotool. Скрипт запускается с задержкой в семь секунд, за это время надо переключится в окно либр-калка, выбрать диаграммку, схватить в руки кривую Безье (типа карандаш) и ждать. А дальше включается в работу скрипт, нажимает мышку, ведёт её недрогнувшей рукой и отпускает. :). Вот что получилось:

Так это
Date: 2017-04-14 09:48 pm (UTC)Но идея тут не в этом. Я вот ни разу не видел в реальных данных нормального распределения. Оно всегда какое-то ненормальное. Вопрос только в размере выборки. На тех выборках, которые можно набрать руками в табличку, никакие тесты на нормальность ненормальность не покажут. Но:
1. Это не значит, что данные нормально распределены и
2. Даже если данные не распределены нормально, модель скорее всего всё равно можно использовать, и она будет хорошо работать.