Якість придатності для двовимірних гістограм


19

У мене є два набори даних, що представляють параметри зірок: спостережуваний та модельований. За допомогою цих наборів я створюю те, що називається двоколірною діаграмою (TCD). Зразок можна побачити тут:

гістограми

Бути спостерігаються дані і Аргументи B даних , витягнуті з моделі (не кажучи вже про чорних лініях, точки представляють дані) У мене є тільки один A - схема, але можуть робити безліч різних B діаграм , як я хочу, і що мені потрібно щоб зберегти той , який найкраще підходить А .

Тому мені потрібно надійний спосіб перевірити правильність пристосування діаграми B (моделі) до діаграми A (спостерігається).

Зараз що я роблю, це створити 2D гістограму або сітку (так я називаю це, можливо, вона має більш правильну назву) для кожної діаграми, пошикуючи обидві осі (100 бункерів на кожну). Потім я проходжу кожну комірку сітки і я знаходжу абсолютну різницю в підрахунках між A і B для даної комірки. Після того , як пройшов через усі клітини, я підсумувати значення для кожного осередку , і тому я в кінцевому підсумку з одного позитивного параметра , що представляє ступінь згоди ( ) між A і B . Чим ближче до нуля, тим краще розміщення. В основному, такий параметр виглядає так:gf

; де я J є число зірок в діаграміАдля цієї конкретної комірки (визначається я J ) і б я J є число дляB.gf=ij|aijbij|aijijbij

Ось як виглядають ті відмінності підрахунків у кожній комірці у створеній сітці (зауважте, що я не використовую абсолютних значень ( a i j - b i j ) у цьому зображенні, але Я зробити їх використовувати при обчисленні г ф параметра):(aijbij)(aijbij)gf

hess

Проблема полягає в тому, що мені повідомили, що це може бути не дуже хорошим оцінкою, головним чином тому, що крім того, щоб сказати, що це підходить, краще, ніж це інше, оскільки параметр нижчий , я дійсно більше нічого не можу сказати.


Важливо :

(дякую @PeterEllis за те, що підняв це)

1 Точки B не пов'язані один-до-одного з точками A . Це важлива річ , щоб мати на увазі при пошуку найкращого: число точок А і В є НЕ обов'язково те ж саме і благість пригонки тесту слід також враховувати цю невідповідність і спробувати звести його до мінімуму.

2- Кількість балів у кожному наборі даних B (вихід моделі), який я намагаюся вписати в A , не визначено.


Я бачив тест Chi-Squared, який використовується в деяких випадках:

i(OiEi)2/EiOiEi

EiEi

Крім того, я читав, що деякі люди рекомендують застосовувати тест Пуассона на вірогідність журналу у таких випадках, коли стосуються гістограми. Якщо це правильно, я дуже вдячний, якби хтось міг доручити мені, як використовувати цей тест у цьому конкретному випадку (пам’ятайте, мої знання зі статистики досить погані, тому будь ласка, будьте так просто, як ви можете :)


Чи мають точки в B співвідношення «один на один» з точками в А (наприклад, кожна - конкретна зірка) або це більш абстрактно, ніж це?
Пітер Елліс

Привіт @PeterEllis, немає точок в B НЕ не пов'язані один до одного з точками A . Насправді це ще одна важлива річ , щоб мати на увазі при пошуку найкращого: число точок в A і B є НЕ обов'язково рівні.
Габріель

Привіт - цікаве запитання, спробую написати належну відповідь. Чи однакова версія B однакова кількість балів, чи вони також різняться?
Пітер Елліс

Вони також різняться, лише кількість балів у А залишається постійною. Ви поняття не маєте, скільки б ви мені допомагали, якщо допоможете мені зрозуміти це @PeterEllis.
Габріель

Це питання сильно нагадує цю тему: stats.stackexchange.com/questions/71036/… Де я дав відповідь.
L Фішман

Відповіді:


14

Гаразд, я детально переглянув цю відповідь. Я вважаю, що замість того, щоб поширювати ваші дані та порівнювати підрахунки в кожному контейнері, пропозиція, яку я поховав у своїй оригінальній відповіді про встановлення 2d оцінки щільності ядра та порівняння їх, є набагато кращою ідеєю. Ще краще, є функція kde.test () в пакеті ks Tarn Duong для R, яка робить це легко як пиріг.

Перегляньте документацію на kde.test для отримання більш детальної інформації та аргументів, які ви можете змінити. Але в основному це робить саме те, що ви хочете. Значення p, яке воно повертає, - це ймовірність генерації двох наборів даних, які ви порівнюєте під нульовою гіпотезою про те, що вони були створені з одного і того ж розподілу. Отже, чим вище р-значення, тим краще прилягання між A і B. Дивіться мій приклад нижче, де це легко виявляє, що B1 і A різні, але що B2 і A правдоподібно однакові (саме так вони були створені) .

# generate some data that at least looks a bit similar
generate <- function(n, displ=1, perturb=1){
    BV <- rnorm(n, 1*displ, 0.4*perturb)
    UB <- -2*displ + BV + exp(rnorm(n,0,.3*perturb))
    data.frame(BV, UB)
}
set.seed(100)
A <- generate(300)
B1 <- generate(500, 0.9, 1.2)
B2 <- generate(100, 1, 1)
AandB <- rbind(A,B1, B2)
AandB$type <- rep(c("A", "B1", "B2"), c(300,500,100))

# plot
p <- ggplot(AandB, aes(x=BV, y=UB)) + facet_grid(~type) + 
    geom_smooth() +     scale_y_reverse() + theme_grey(9)
win.graph(7,3)
p +geom_point(size=.7)

введіть тут опис зображення

> library(ks)
> kde.test(x1=as.matrix(A), x2=as.matrix(B1))$pvalue
[1] 2.213532e-05
> kde.test(x1=as.matrix(A), x2=as.matrix(B2))$pvalue
[1] 0.5769637

МОЙ ОРИГІНАЛЬНИЙ ВІДПОВІДЬ НІЖ, КЕПТ ТІЛЬКИ ТАКОЖ Є СЕЙЧАСИ ПОСИЛАННЯ НА НЕ З ЕЛЬЗЕ, З КОГО НЕ ЗРОБИТИ СЕНСАМ

По-перше, можуть бути й інші способи вирішити це.

Justel та ін. Висунули багатоваріантне розширення тесту Колмогорова-Смірнова на корисність, який, на мою думку, може бути використаний у вашому випадку, щоб перевірити, наскільки кожен набір модельованих даних відповідає оригіналу. Я не зміг знайти реалізацію цього (наприклад, в R), але, можливо, я не виглядав досить важко.

Крім того, може бути спосіб це зробити, встановивши копулу як на вихідні дані, так і на кожен набір модельованих даних, а потім порівнюючи ці моделі. Є реалізація цього підходу в R та інших місцях, але я не особливо знайомий з ними, тому не намагався.

Але безпосередньо для вирішення вашого питання підхід, який ви застосували, є розумним. Кілька пунктів підказують самі:

  • Якщо ваш набір даних не більший, ніж здається, я вважаю, що сітка 100 x 100 - це занадто багато бункерів. Інтуїтивно кажучи, я можу собі уявити, що висновок, що різні набори даних є більш різними, ніж вони лише через точність ваших бункерів, означає, що у вас багато бункерів з низькою кількістю очок, навіть коли щільність даних висока. Однак це врешті-решт є справою судження. Я, безумовно, перевіряв би ваші результати з різними підходами до бінінгу.

  • Після того, як ви виконали binning і перетворили ваші дані в (фактично) таблицю обставин, що рахується з двома стовпцями та кількістю рядків, що дорівнює кількості бункерів (у вашому випадку 10 000), у вас є стандартна проблема порівняння двох стовпців. підрахунків Або тест на квадрат Chi чи підгонка якоїсь моделі Пуассона спрацював би, але, як ви кажете, незручність через велику кількість нульових підрахунків. Будь-яка з цих моделей зазвичай підходить шляхом мінімізації суми квадратів різниці, зважених на обернене очікуваного числа підрахунків; коли це наближається до нуля, це може спричинити проблеми.

Редагувати - решту цієї відповіді я тепер більше не вважаю відповідним підходом.

ng×2

ng×2ng

Я імітував деякі дані, щоб вони були схожими на ваші, і виявив, що цей підхід був досить ефективним для визначення того, який із моїх наборів даних "B" генерується з того самого процесу, що і "A", а які трохи відрізняються. Безумовно, більш ефективно, ніж неозброєним оком.

  • При такому підході тестування незалежності змінних у a ng×2проблема, якщо ви використовуєте лише суму абсолютних різниць або різниць у квадраті, як ви спочатку пропонуєте). Однак має значення те, що кожна ваша версія B має різну кількість балів. В основному, великі набори даних B матимуть тенденцію до повернення нижчих значень p. Я можу придумати кілька можливих рішень цієї проблеми. 1. Ви можете зменшити всі ваші набори даних B до однакового розміру (розмір найменшого з ваших наборів B), взявши випадкову вибірку такого розміру з усіх наборів B, які перевищують цей розмір. 2. Ви можете спочатку встановити двовимірну оцінку щільності ядра до кожного з ваших B наборів, а потім змоделювати дані з цієї оцінки, що мають рівні розміри. 3. Ви можете використовувати якесь моделювання, щоб розробити співвідношення p-значень до розміру і використовувати це для "виправлення" p-значення, отримані в результаті вищевказаної процедури, тому вони порівнянні. Можливо, є й інші альтернативи. Який з них ви будете залежати від того, як були створені дані B, наскільки різні розміри тощо.

Сподіваюся, що це допомагає.


Я зробив декілька незначних виправлень помилок; Сподіваюся, ви не заперечуєте. Можливо, існує спосіб форматування речей, щоб викласти основні ідеї трохи помітніше, особливо в останній точці позначки. Але я теж не хотів бути надмірним. Ура. :)
кардинал

ніяких проб. Я боровся з хорошим способом форматування моєї останньої точки кулі - те, що я хотів, - це ієрархія нумерованого списку під крапкою. Але я не міг знайти, як це зробити.
Пітер Елліс

Так, я теж це коротко поспілкувався, бо це, здавалося, ви задумали. Я не міг швидко зрозуміти, як це зробити, і дуже вагався вносити оптові зміни в макет, тому зрозумів, що просто прокоментую замість цього. :)
кардинал

1
Я рекомендую книгу Вілкокса як загальний текст статистики, який використовує R (див. Мою відповідь stats.stackexchange.com/questions/25632/… ). Хоча він і не висвітлює точний текст Фішера, є достатньо детальної інформації про конкретний текст в Інтернеті, який матиме більше сенсу, якщо ви знайдете передумови в цій книзі на подібних тестах. Там може бути кращий текст про цю специфічну проблему корисності придатності, але я думаю, що книга Вілкокса чудова як загальне вступ, що швидко піднімає вас на високий рівень.
Пітер Елліс

1
Ого. Ти відповів, чортви, з цієї речі. Якби була "краща зміна стак", це було б у ній.
Colin K
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.