Kamil Bęczyński

Kamil Bęczyński R, SAS, analizy

Temat: mlogit - w jaki sposób otrzymać wektor zawierający...

Chcę użyć pakietu mlogit, odpaliłem help'1 :


data("Fishing", package = "mlogit")
Fish <- mlogit.data(Fishing, varying = c(2:9), shape = "wide", choice = "mode")

m1=mlogit(mode ~ price + catch, data = Fish)


chcę otrzymać wektor zawierający dopasowane przez model klasy, otrzymuję coś takiego :

> m1$fitted[1:10]
1.beach 2.beach 3.beach 4.beach 5.beach 6.beach 7.beach 8.beach 9.beach
0.3690034 0.3852498 0.4776761 0.3239023 0.4609957 0.4570714 0.3963114 0.2649940 0.3089963
10.beach
0.3089963


czyli wektor, gdzie nazwy składają się z numeru obserwacji, a po nim następuje nazwa dopasowanej klasy, w jaki sposób otrzymać
wektor z samymi nazwami klas ?Kamil Bęczyński edytował(a) ten post dnia 17.04.12 o godzinie 11:00

Temat: mlogit - w jaki sposób otrzymać wektor zawierający...

Może tak? Niestety, mam na kompie w pracy 2.12, format wyniku mam inny, niż Ty, dlatego nie mogę pomóc dokładniej. Zrobiłem więc ramkę z rnorm i colnames. Jak wyciągnąć same nazwy klas z obiektu wyniku nie wiem, ale jeśli wynik ma taką postać, albo da się wyciągnąć z niego colnames, to poniższe powinny pomóc.

 > x
1.beach 2.beach 3.beach 4.swimmingpool 5.swimmingpool 6.cinema 7.cinema 8.cinema 9.walk 10.walk
1 0.3758105 -0.9987088 1.112389 0.4104801 1.023454 0.5415625 0.5824617 1.711011 0.9996785 1.323857

> unique(sub("[0-9]+.", "", colnames(x) ))
[1] "beach" "swimmingpool" "cinema" "walk"


albo tak

> names(table(sub("[0-9]+.", "", colnames(x) )))
[1] "beach" "cinema" "swimmingpool" "walk"


Jak użyję freq to dostaję
 > m1$freq

beach boat charter pier
134 418 452 178

> names(m1$freq)
[1] "beach" "boat" "charter" "pier"
Adrian Olszewski edytował(a) ten post dnia 17.04.12 o godzinie 11:36
Wojciech Sobala

Wojciech Sobala Redaktor
statystyczny,
biostatystyk,
Instytut Medycyny
Pr...

Temat: mlogit - w jaki sposób otrzymać wektor zawierający...


names(m1$freq)[apply(predict(m1,Fish),1,which.max)]
Kamil Bęczyński

Kamil Bęczyński R, SAS, analizy

Temat: mlogit - w jaki sposób otrzymać wektor zawierający...

Dziękuję bardzo, myślałem, ze po prostu przeoczyłem jakąś opcję, gdyż wcześniej nie używałem mlogit'a, a teraz widzę, że jednak trzeba się zastanowić jak to zrobić.

Pozdrawiam

ps. gdyby kropek było więcej można jeszcze użyć :

strsplit("12345.abcde.6789","\\.")


i wybrać sobie odpowiedni wyraz.Kamil Bęczyński edytował(a) ten post dnia 21.04.12 o godzinie 10:40

Następna dyskusja:

W jaki sposób dodać...




Wyślij zaproszenie do