Funkcja kosztu do walidacji modeli regresji Poissona

12

Do gromadzenia danych, które zgromadziłem, używam regresji Poissona do budowania modeli. Robię to za pomocą glmfunkcji w języku R, gdzie używam family = "poisson". Do oceny możliwych modeli (mam kilka predyktorów) używam AIC. Na razie w porządku. Teraz chcę przeprowadzić weryfikację krzyżową. Udało mi się już to zrobić za pomocą cv.glmfunkcji z bootpakietu. Z dokumentacji o cv.glmwidzę, że np danych dwumiennych trzeba użyć funkcji specyficznych kosztów, aby uzyskać znaczący błąd predykcji. Jednak nie mam jeszcze pojęcia, do jakiej funkcji kosztów jest odpowiednia family = poisson, a obszerne wyszukiwanie w Google nie przyniosło żadnych konkretnych rezultatów. Moje pytanie brzmi: każdy ma trochę światła do wyjaśnienia, dla której funkcji kosztu jest odpowiednia cv.glmw przypadku poissona glm.

Paul Hiemstra
źródło
1
Funkcja cv.glmnetw pakiecie glmnetwykorzystuje type.measure="deviance"dla rodziny Poisson.
rcs
Ściśle rzecz biorąc, dokumentacja pokazuje, że sensowne jest użycie określonej funkcji kosztów dla danych binarnych.
Korone
@ Koron nie jest ciągłymi danymi ani danymi binarnymi. Szukałem więc funkcji kosztu odpowiedniej dla danych zliczania.
Paul Hiemstra
1
Nie sądzę, że dyskrecja danych ma tu duże znaczenie, chyba że twoje liczby są bardzo małe. Chodzi raczej o dystrybucję danych. W przypadku danych binarnych przewidywanie jest ciągłym prawdopodobieństwem od 0 do 1, ale odpowiedź zawsze wynosi 0 lub 1. W ich przykładzie siła wymusza, aby koszt był „właściwy” lub „zły” i policzył liczbę praw i błędów. Czy szczególnie martwisz się o ciągłość? Dodam PS do mojej odpowiedzi, aby rozwiązać problem ciągłości
Korone

Odpowiedzi:

12

Zakładając, że w twoim konkretnym przypadku nie ma nic specjalnego, uważam, że istnieje dobry argument za użyciem wartości domyślnej (średni błąd kwadratu) lub średniego błędu dzienników, a nawet błędu chi-kwadrat.

Celem funkcji kosztu jest wyrażenie, jak bardzo jesteś „zdenerwowany” niewłaściwymi przewidywaniami, a konkretnie tym, co najbardziej ci przeszkadza. Jest to szczególnie ważne w przypadku odpowiedzi binarnych, ale może mieć znaczenie w każdej sytuacji.

Średni błąd kwadratowy (odpowiedzi)

C=1ni(YiY^i)2

Korzystając z MSE, jesteś w równym stopniu wrażliwy na błędy z góry i z dołu oraz w równym stopniu wrażliwy na duże i małe prognozy. Jest to dość standardowa rzecz do zrobienia, więc nie sądzę, aby w większości przypadków byłby to niezadowolony.

Średni błąd kwadratowy (odpowiedzi dziennika)

C=1ni(lnYilnY^i)2

Ponieważ pracujesz z danymi zliczania, można argumentować, że nie jesteś symetryczny ani obojętny na wielkość. Wykluczenie o 10 liczy się dla prognozy 10, bardzo różni się od prognozy 1000. Jest to nieco „kanoniczna” funkcja kosztu, ponieważ dopasowałeś koszty do funkcji link. Zapewnia to, że koszty odpowiadają rozkładowi wariancji zakładanemu w modelu.

Błąd chi-kwadrat

C=1ni(YiY^i)2Y^i

Trzecim sposobem byłoby użycie błędu chi-kwadrat. Może to być szczególnie atrakcyjne, jeśli porównujesz swój GLM z innymi modelami opartymi na zliczaniu - szczególnie jeśli istnieją czynniki w GLM. Podobnie do odpowiedzi w dzienniku błędów, będzie się skalować wraz z rozmiarem, ale jest symetryczny wokół przewidywanej liczby. Oceniasz teraz poprawność dopasowania na podstawie błędu procentowego.


O dyskrecji

Pytanie przytacza przykład dokumentacji, w której mają binarną zmienną odpowiedzi, więc użyj innej funkcji kosztu. Problem z odpowiedzią binarną polega na tym, że GLM prognozuje liczbę rzeczywistą od 0 do 1, nawet jeśli odpowiedź zawsze wynosi dokładnie 0 lub 1. Można powiedzieć, że im bliżej tej liczby do poprawnej odpowiedzi, tym lepiej prognozy, ale często ludzie tego nie chcą. Powodem jest to, że często trzeba postępować tak, jakby to było 0 lub 1, a więc weźmie mniej niż 0,5 jako prognozę na 0. W takim przypadku sensowne jest po prostu policzyć liczbę „złych” prognoz. Argument jest taki, że w przypadku pytania typu prawda / fałsz można zawsze mieć rację lub zło - nie ma stopniowania zła.

Y^

Korone
źródło
Zamiast pracować ze średnim błędem kwadratowym średniego błędu kwadratowego odpowiedzi przekształconej logarytmicznie, może być lepszym rozwiązaniem, aby GLM używał ważonego błędu średniego kwadratu za pomocą wag 1 / wariancji (podanych przez przedział wagowy $ wyjściowej wartości glm R, dla poissona = 1 / E (Y)). To działa, wierzę, dla każdego rodzaju GLM.
Tom Wenseleers,