Вычисление числа AI C вручную. Дано распределение данных и некоторая строка распределения. - PullRequest
0 голосов
/ 29 января 2020

Предположим, у меня есть следующие данные:

 array([[0.88574245, 0.3749999 , 0.39727183, 0.50534724],
        [0.22034441, 0.81442653, 0.19313024, 0.47479565],
        [0.46585887, 0.68170517, 0.85030437, 0.34167736],
        [0.18960739, 0.25711086, 0.71884116, 0.38754042]])

и я знаю, что эти данные соответствуют нормальному распределению. Как рассчитать число AI C? Формула:

2K - 2log(L)

K - суммарные параметры, для нормального распределения параметр равен 3 (среднее значение, дисперсия и остаток). Я застрял на L, предполагается, что L - функция максимального правдоподобия, я не уверен, что передать туда для данных, которые следуют за нормальным распределением, как насчет Коши или экспоненциального. Спасибо.

Update: this question appeared in one of my coding interview. 

Ответы [ 2 ]

3 голосов
/ 30 января 2020

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

В любом случае, AI C - это, по сути, штрафное вычисление логарифмической вероятности. Вероятность записи велика - чем больше вероятность записи, тем лучше модель соответствует данным. Однако, если у вас достаточно свободных параметров, вы всегда можете повысить вероятность записи в журнал. Хм. Поэтому были предложены различные штрафные термины, которые противодействуют влиянию более свободных параметров. AI C (Информационный критерий Акаике) является одним из них.

Таким образом, проблема, как указано, заключается в том, что (1) найти логарифмическую вероятность для каждой из трех данных моделей (нормальная, экспоненциальная и Коши), (2) подсчитать свободные параметры для каждой, и (3) вычислить AI C из (1) и (2).

Теперь для (1) вам нужно (1a) найти или вывести оценку максимального правдоподобия для каждой модели. В норме это просто выборочное среднее и выборочная дисперсия. Я не помню других, но вы можете посмотреть их или отработать. Затем (1b) необходимо применить оценки к заданным данным, а затем (1 c) рассчитать вероятность или, что эквивалентно, логарифмическую вероятность оценочных параметров для данных данных. Логарифмическая вероятность любого значения параметра является просто суммой (log (p (x | params))), где params = параметры, оцениваемые по максимальной вероятности.

Что касается (2), для нормального есть 2 параметра распределение, мю и сигма ^ 2. Для экспоненты есть 1 (это можно назвать лямбда или тэта или что-то). Для Коши может быть параметр масштаба и параметр местоположения. Или, может быть, нет свободных параметров (по центру ноль и масштаб = 1). Таким образом, в каждом случае K = 1 или 2 или, может быть, K = 0, 1 или 2.

Возвращаясь к (1b), данные выглядят немного смешно для меня. Я ожидал бы одномерный список, но кажется, что массив является двухмерным (с 4 строками и 4 столбцами, если я посчитал правильно). Можно было бы go вернуться и спросить об этом. Если они действительно хотят иметь 4-мерные данные, то концептуальная основа остается той же, но вычисления будут немного сложнее, чем в 1-м случае.

Удачи и веселья, это хорошая проблема.

2 голосов
/ 30 января 2020

Для данного нормального распределения вероятность y дана

import scipy.stats

def prob( y = 0, mean = 0, sd = 1 ):
    return scipy.stats.norm( mean, sd ).pdf( y )

Например, если даны mean = 0 и sd = 1, вероятность значения 0 равна prob( 0, 0, 1 )

Если у нас есть набор значений 0 - 9, логарифмическая вероятность - это сумма логарифма этих вероятностей, в этом случае наилучшими параметрами являются среднее значение x и StDev из x, как в:

import numpy as np
x = range( 9 )
logLik = sum( np.log( prob( x, np.mean( x ), np.std( x ) ) ) ) 

Тогда AI C просто:

K = 2
2*K - 2*( logLik )

Для предоставленных вами данных я не уверен, что отражают три столбца и строки , Итак, вы должны рассчитать три средних и три StDev-ы? Это не очень понятно.

Надеюсь, это поможет вам начать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...