Как сравнить различные средства распределения с эталонным значением истинности в Matlab? - PullRequest
1 голос
/ 17 сентября 2010

У меня есть производственные (q) значения из 4 различных методов, хранящиеся в 4 матрицах.Каждая из 4 матриц содержит q значений из другого метода:

Matrix_1 = 1 row x 20 column 

Matrix_2 = 100 rows x 20 columns 

Matrix_3 = 100 rows x 20 columns 

Matrix_4 = 100 rows x 20 columns 

Количество столбцов указывает количество лет.1 строка будет содержать производственные значения, соответствующие 20 годам.Другие 99 строк для матриц 2, 3 и 4 - это просто разные реализации (или прогоны симуляции).Таким образом, в основном остальные 99 строк для матриц 2,3 и 4 представляют собой повторяющиеся случаи (но не с точными значениями из-за случайных чисел).

Рассматривайте Matrix_1 в качестве эталонной истины (или базового случая).Теперь я хочу сравнить остальные 3 матрицы с Matrix_1, чтобы увидеть, какая из этих трех матриц (каждая с 100 повторениями) лучше всего сравнивается или имитирует с Matrix_1.

Как это можно сделатьв матлабе?

Я знаю, что вручную мы используем доверительный интервал (CI), нанося на график mean of Matrix_1 и рисуя каждое распределение mean of Matrix_2, mean of Matrix_3 и mean of Matrix_4.Ответом будет самый большой CI среди матриц 2, 3 и 4, который содержит справочную правду (или mean of Matrix_1).

mean of Matrix_1 = (1 row x 1 column)

mean of Matrix_2 = (100 rows x 1 column)

mean of Matrix_3 = (100 rows x 1 column)

mean of Matrix_4 = (100 rows x 1 column)

Надеюсь, вопрос ясен и актуален для SO.В противном случае, пожалуйста, не стесняйтесь редактировать / предлагать что-либо в вопросе.Спасибо!

РЕДАКТИРОВАТЬ: Мои три метода, о которых я говорил, это a1, a2 и a3 соответственно.Вот мой результат:

ci_a1 =

  1.0e+008 *

   4.084733001497999
   4.097677503988565

ci_a2 =

  1.0e+008 *

   5.424396063219890
   5.586301025525149

ci_a3 =

  1.0e+008 *

   2.429145282593182
   2.838897116739112

p_a1 =

    8.094614835195452e-130

p_a2 =

    2.824626709966993e-072

p_a3 =

    3.054667629953656e-012

h_a1 = 1; h_a2 = 1;  h_a3 = 1

Ни один из моих CI, из трех методов, не включает в себя mean ( = 3.454992884900722e+008) внутри него.Так мы все еще рассматриваем p-значение, чтобы выбрать лучший результат?

Ответы [ 2 ]

2 голосов
/ 28 сентября 2010

РЕДАКТИРОВАТЬ: я неправильно истолковал ваш вопрос.Смотрите ответ Юка и следующие комментарии.Мой ответ - то, что вам нужно, если вы хотите сравнить распределения двух векторов вместо вектора с одним значением.По-видимому, последний случай здесь.

Что касается ваших t-тестов, вы должны иметь в виду, что они проверяют на "истинное" среднее значение.Учитывая количество значений для каждой матрицы и доверительные интервалы, нетрудно угадать стандартное отклонение ваших результатов.Это мера «распространения» ваших результатов.Теперь ошибка вашего среднего значения рассчитывается как стандартное отклонение ваших результатов, деленное на количество наблюдений.А доверительный интервал рассчитывается умножением этой стандартной ошибки на прибл.2.

Этот доверительный интервал содержит истинное среднее значение в 95% случаев.Таким образом, если истинное среднее значение находится точно на границе этого интервала, значение p равно 0,05, чем дальше среднее значение, тем ниже значение p.Это может быть интерпретировано как вероятность того, что значения, которые вы имеете в матрице 2, 3 или 4, получены из совокупности со средним значением, как в матрице 1. Если вы видите ваши p-значения, эти шансы можно сказать, что они не существуют.

Итак, вы видите, что, когда количество значений становится большим, доверительный интервал становится меньше, и t-критерий становится очень чувствительным.То, что это говорит вам, не более того, что три матрицы значительно отличаются от среднего.Если вам нужно выбрать один, я бы все равно посмотрел на дистрибутивы.В противном случае тот, у кого ближайшее среднее значение, кажется правильным.Если вы хотите углубиться в это, вы также можете задать на stats.stackexchange.com


Ваш вопрос и ваш метод не совсем понятны:

  • Является лираспределение одинаково во всех столбцах?Это важно, так как два распределения могут иметь одинаковое среднее значение, но значительно различаться:

alt text

  • есть причина, по которой вы не используете CentralПредельная теорема?Мне кажется, что это очень сложный способ получения результата, который можно легко найти, используя тот факт, что распределение среднего значения приближается к нормальному распределению, где sd (среднее) = sd (наблюдения) / количество наблюдений.Сохраняет довольно много работы - если дистрибутивы одинаковые!-

Теперь, если вопрос действительно заключается в сравнении распределений, вы должны рассмотреть общую идею qqplot и колмогоровский набор 2Тест Смирнова для формального тестирования.Но, пожалуйста, ознакомьтесь с этим тестом, поскольку вы должны понимать, что он делает, чтобы правильно интерпретировать результаты.

О знаках: если вы проводите этот тест в нескольких случаях, убедитесь, что понимаете проблемумножественные сравнения и использовать соответствующую коррекцию, например.Бонферрони или Данн-Сидак.

2 голосов
/ 25 сентября 2010

Если я правильно понимаю, вычисления в MATLAB довольно прямолинейны.

Шаги 1-2 (средний расчет):

k1_mean = mean(k1);
k2_mean = mean(k2);
k3_mean = mean(k3);
k4_mean = mean(k4);

Шаг 3, используйте HIST для построения гистограмм распределения:

hist([k2_mean; k3_mean; k4_mean]')

Шаг 4. Вы можете сделать t-тест, сравнивая ваши векторы 2, 3 и 4 с нормальным распределением со средним k1_mean и неизвестной дисперсией. Подробнее см. TTEST .

[h,p,ci] = ttest(k2_mean,k1_mean);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...