Выполнение вероятностных расчетов на более высоком уровне абстракции - PullRequest
18 голосов
/ 27 ноября 2011

Для даунвотеров: это не вопрос математики, это вопрос по языку программирования Mathematica .

Одной из главных характеристик Mathematica является то, что он может иметь дело со многими вещами символически. Но если задуматься, многие из символических функций на самом деле только наполовину символические.

Взять, к примеру, векторы. Мы можем иметь символический вектор, такой как {x, y, z}, выполнять умножение матриц на матрицу, полную символов, и в конечном итоге получить символический результат, и поэтому мы можем рассмотреть , что символическая векторная алгебра. Но мы все знаем, что прямо из коробки Mathematica не позволяет вам сказать, что символ x является вектором и что с учетом матрицы A , A . x тоже вектор. Это более высокий уровень абстракции, с которым Mathematica (в настоящее время) не очень хорошо справляется.

Точно так же Mathematica знает, как найти 5-ю производную функции, которая определяется не чем иным, как символами, но она не очень хорошо подходит для поиска r -ой производной (см. " How" найти r-ю производную функции, когда r является символическим в Mathematica?"вопрос).

Кроме того, Mathematica обладает обширными возможностями булевой алгебры , некоторые каменные века, но многие недавно получены в версии 7. В версии 8 мы получили Вероятность и друзей (таких как * 1031) * Условное ), что позволяет нам рассуждать о вероятностях случайных величин с заданными распределениями. Это действительно великолепное дополнение, которое очень помогает мне в ознакомлении с этой областью, и мне очень нравится работать с ней. Тем не менее, ...

Я обсуждал с коллегой некоторые правила вероятностной логики, такие как знакомые

enter image description here

Т.е. условная вероятность события / состояния / результата C для данного события / состояния / результата A равна истинности.

В частности, мы смотрели на это:

enter image description here

и хотя я много говорил о Probability Mathematica как раз перед тем, как понял, что не знаю, как решить эту проблему прямо сейчас с Mathematica. Опять же, как и в случае абстрактных векторов, матриц и символических производных, этот уровень абстракции кажется слишком высоким. Либо это? Мой вопрос:

Не могли бы вы найти способ найти правду или ложь в приведенных выше и аналогичных уравнениях с помощью программы Mathematica?

Ответы [ 2 ]

3 голосов
/ 12 декабря 2011

>> Mathematica не позволяет вам сказать, что символ x является вектором

Конечно, это так ... Достаточно близко ... в любом случае ... что это коллекция Реалов.Это называется допущением или условием, в зависимости от того, что вы хотите сделать.

Refine[Sqrt[x]*Sqrt[y]]

Выше не уточняется, потому что предполагается, что X и Y могут быть любым символом, но если вы сузите область их действия, вы получите результаты:

Assuming[ x > 0 && y > 0, Refine[Sqrt[x]*Sqrt[y]]]

Было бы очень хорошо иметь возможность сказать: Element[x,Reals^2] (двумерный вещественный вектор), возможно в Mathematica 9.: -)


Что касается этой проблемы:

>> Не могли бы вы найти способ найти правду или ложь в приведенных выше и аналогичных уравнениях с помощью программы Mathematica?

Пожалуйста, обратитесь к моему ответу (первому) по этому вопросу, чтобы увидеть символический подход к теореме Байеса: https://stackoverflow.com/questions/8378336/how-do-you-work-out-conditional-probabilities-in-mathematica-is-it-possible

1 голос
/ 28 ноября 2011

Просто взглянул на это и нашел пример из документации по Condition:

In[1]:= c = x^2 < 30; a = x > 1;

( Извините за форматирование здесь ... )

In[2]:= Probability[c \[Conditioned] a, x \[Distributed] PoissonDistribution[2]] == 
Probability[c && a, x \[Distributed] PoissonDistribution[2]] / Probability[a, x \[Distributed] PoissonDistribution[2]]

Что соответствует True и соответствует менее общей версии первого примера, который вы привели.

Я вернусь к этому позже сегодня вечером, если у меня будет время.

...