Próbuję wykonać uporządkowaną regresję logit. Korzystam z takiego modelu (tylko głupi, mały model szacujący liczbę firm na rynku na podstawie miar dochodów i populacji). Moje pytanie dotyczy prognoz.
nfirm.opr<-polr(y~pop0+inc0, Hess = TRUE)
pr_out<-predict(nfirm.opr)
Kiedy uruchamiam przewidywanie (którego próbuję użyć, aby uzyskać przewidywaną wartość y), dane wyjściowe wynoszą 0, 3 lub 27, co w żaden sposób nie odzwierciedla prognozy opartej na moich manualnych prognozach ze współczynnika oszacowania i przechwyty. Czy ktoś wie, jak uzyskać „dokładne” prognozy dla mojego zamówionego modelu logit?
EDYTOWAĆ
Aby wyjaśnić moje obawy, moje dane odpowiedzi zawierają obserwacje na wszystkich poziomach
>head(table(y))
y
0 1 2 3 4 5
29 21 19 27 15 16
gdzie, jak moja przewidywana zmienna, wydaje się grupować
> head(table(pr_out))
pr_out
0 1 2 3 4 5
117 0 0 114 0 0
r
econometrics
logit
ordered-logit
prototoast
źródło
źródło
predict
funkcję różnią się od wartości wygenerowanych ręcznie? Jaka jest struktura twojej zmiennej zależnej? Podaj powtarzalny przykład.polr()
względem innych funkcji? Można spróbowaćlrm()
z pakieturms
:lrmFit <- lrm(y ~ pop0 + inc0); predict(lrmFit, type="fitted.ind")
. Inną opcją jestvglm()
z pakietuVGAM
:vglmFit <- vglm(y ~ pop0 + inc0, family=propodds); predict(vglmFit, type="response")
. Oba zwracają macierz przewidywanych prawdopodobieństw kategorii. Zobacz moją odpowiedź, aby uzyskać stamtąd przewidywane kategorie.Odpowiedzi:
Aby ręcznie zweryfikować przewidywania wynikające z użyciaY 1,…,g,…,k X1,…,Xj,…,Xp
polr()
z pakietuMASS
, załóżmy sytuację z kategorycznie zależną zmienną z uporządkowanymi kategoriami oraz predyktorami . zakłada model proporcjonalnych szans1 , … , g , … , k X 1 , … , X j , … , X ppolr()
Aby zapoznać się z możliwymi wyborami zaimplementowanymi w innych funkcjach, zobacz tę odpowiedź . Funkcja logistyczna jest odwrotnością funkcji logit, więc przewidywane prawdopodobieństwa wynosząp^(Y⩽g)
Przewidywane prawdopodobieństwa kategorii to . Oto powtarzalny przykład w R z dwoma predyktorami . W przypadku porządkowej zmiennej przecięłem symulowaną zmienną ciągłą na 4 kategorie.P^(Y=g)=P^(Y≤g)−P^(Y≤g−1) X1,X2 Y
Teraz dopasuj model proporcjonalnego prawdopodobieństwa za pomocą
polr()
i uzyskaj macierz przewidywanych prawdopodobieństw kategorii za pomocąpredict(polr(), type="probs")
.Aby ręcznie zweryfikować te wyniki, musimy wyodrębnić oszacowania parametrów, z nich obliczyć przewidywane logity, z tych logów obliczyć przewidywane prawdopodobieństwa , a następnie powiązać przewidywane prawdopodobieństwa kategorii z macierzą .p^(Y⩽g)
Porównaj z wynikiem z
polr()
.W przypadku przewidywanych kategorii
predict(polr(), type="class")
wystarczy wybrać - dla każdej obserwacji - kategorię o najwyższym prawdopodobieństwie.Porównaj z wynikiem z
polr()
.źródło