построить график распределения по набору дискретных значений

Entikjkeee

Задача следующая: есть программа, которая запускается много раз. Каждый раз записывается время работы программы. То есть, в итоге есть набор времен выполнения, например {1 секунда, 2.5 секунд, 10 секунд, 1 секунда, 3 секунды,...}. Всего в наборе порядка 100,000 значений.
Как и с помощью чего (mathcad, mapple, руками, etc) построить график вероятности того, сколько времени программа будет работать для произвольного запуска?
// Воспоминания тервера подсказывают только слова "плотность распределения" и "мат. ожидание". :)

MammonoK

процедура на любом языке программирования за пару минут пишется
http://en.wikipedia.org/wiki/Kernel_density_estimation
для программных пакетов по ссылке есть названия процедур, которые это делают

a7137928

Че еще за кернел денсити?..
1. Записываем данные в текстовый файл (в эксель сто тысяч измерений не влезут)
2. Открываем его стат.пакетом (Statistica, SPSS)
3. Строим гистограмму
На гистограмме можно менять число отрезков разбиения, тем самым увеличивать точность гистограммы.
Если же нужна именно функция плотности, то вопрос: как автор топика планирует её в дальнейшем использовать? И вообще, в каком виде она должна быть? Функцию ведь просто так в компьютере не задашь.

MammonoK

Ну он просил именно функцию плотности.
In statistics, kernel density estimation (or Parzen window method, named after Emanuel Parzen) is a non-parametric way of estimating the probability density function of a random variable. As an illustration, given some data about a sample of a population, kernel density estimation makes it possible to extrapolate the data to the entire population.

Although less smooth density estimators such as the histogram density estimator can be made to be asymptotically consistent, others are often either discontinuous or converge at slower rates than the kernel density estimator. Rather than grouping observations together in bins, the kernel density estimator can be thought to place small "bumps" at each observation, determined by the kernel function. The estimator consists of a "sum of bumps" and is clearly smoother as a result (see below image).

a7137928

Не, это я понял, википедию прочитал.
Просто я раньше не особо видел вообще такую штуку.
Понятно, что с её помощью можно получить некую гладкую функцию, похожую на плотность. И где-то такая штуковина используется. Но я не думаю, что это тот самый случай.
В любом случае, нужно понять, зачем автору вообще плотность, что он будет с ней делать? Если f(x) - эмпирическая плотность, он планирует туда подставлять разные иксы и смотреть, какое будет значение, то формула, указанная для кернел денсити будет не особо удобной, поскольку там сумма по всем имеющимся наблюдениям (сто тысяч долго суммировать придется.

MammonoK

Просто я раньше не особо видел вообще такую штуку.
К примеру, это во всяких экономических штуках, типа эконометрики, используется. Может и правда нафиг не нужно такое автору. Просто автор не гистограмму просил - я все-таки думаю, что такое гистограмма, он знает.

Entikjkeee

В любом случае, нужно понять, зачем автору вообще плотность, что он будет с ней делать?
Плотность мне не нужна, мне нужен график, где по оси X - время, по оси - Y - вероятность.

mong

ну чё сложного-то посчитать в скольки случаях реализовалрсь 2ю5 секунды, в скольки 3, в скольки 5 ?
а потом их построить?

a7137928

Йопт.
Плотность мне не нужна, мне нужен график, где по оси X - время, по оси - Y - вероятность

А плотность - это по-твоему что такое?
*********************
Вообще, машинное время дискретно, но заметить эту дискретность в рамках эксперимента нереально. Поэтому полагаем, что время работы программы - непрерывная случайная величина. Для неё вероятность принять каждое конкретное значение равно нулю. Если тебе нужно именно то, что ты написал ("по оси X - время, по оси - Y - вероятность" то можешь построить график нуля и радоваться.
Если же тебе нужно приближение графика плотности (а именно это тебе наверняка и нужно то строй гистограмму.
Оставить комментарий
Имя или ник:
Комментарий: