Analizuj proporcje


13

Mam zestaw danych zawierający wiele proporcji, które sumują się do 1. Jestem zainteresowany zmianą tych proporcji wzdłuż gradientu (patrz na przykład dane poniżej).

gradient <- 1:99
A1 <- gradient * 0.005
A2 <- gradient * 0.004
A3 <- 1 - (A1 + A2)

df <- data.frame(gradient = gradient,
                 A1 = A1,
                 A2 = A2,
                 A3 = A3)

require(ggplot2)
require(reshape2)
dfm <- melt(df, id = "gradient")
ggplot(dfm, aes(x = gradient, y = value, fill = variable)) +
  geom_area()

wprowadź opis zdjęcia tutaj

Informacje dodatkowe: Nie musi to być koniecznie liniowe, zrobiłem to tylko dla uproszczenia przykładu. Dostępne są również oryginalne liczby, na podstawie których obliczane są te proporcje. Prawdziwy zestaw danych zawiera więcej zmiennych sumujących się do 1 (np. B1, B2 i B3, C1 do C4 itp.) - więc wskazówka dla rozwiązania wielowymiarowego byłaby również pomocna ... Ale na razie będę trzymać się jednowymiarowego strona statystyki.

Pytanie: Jak można analizować tego rodzaju dane? Przeczytałem trochę, a może pasuje model wielomianowy lub glm? - Jeśli uruchomię 3 (lub 2) błyski, jak mogę uwzględnić ograniczenie, że przewidywane wartości sumują się do 1? Nie chcę tylko wykreślać tego rodzaju danych, chcę również przeprowadzić głębszą regresję, taką jak analiza. Wolę używać R - jak mogę to zrobić w R?


Polecenie proprcsplinew Stacie może być tym, czego szukasz (wiem, że chcesz go użyć R, ale może to być punkt wyjścia): proprcspline oblicza ograniczony splajn sześcienny gładki proporcji obserwacji w każdej kategorii yvar, biorąc pod uwagę xvar, i przedstawia je w postaci wykresu warstwowego. Opcjonalnie te wygładzone proporcje można dostosować do zestawu zmiennych kontrolnych (cvars).
boscovich,

Czy mógłbyś wyjaśnić, co oznacza „zainteresowany”? Czy chcesz po prostu wykreślić proporcje względem gradientu? Czy masz na myśli głębszą analizę? Jeśli tak, to jaka jest jego natura - czego dokładnie oczekujesz na podstawie tych danych? Czy masz również dostępne oryginalne liczby (które byłyby dobre), czy tylko proporcje? Czy możesz powiedzieć coś więcej o tym, z czego składają się te dane i jak są one gromadzone?
whuber

1
@whuber: Chcę przeprowadzić głębszą analizę tych danych. Moja hipoteza jest taka, że ​​proporcje zmienią się wraz z gradientem. Liczby są również dostępne.
EDi,

1
Wygląda na to, że masz dane dotyczące składu. Niewiele o tym wiem, ale praca Aitchisona jest miejscem, od którego można zacząć. W CRAN jest paczka, kompozycje.
Aaron opuścił Stack Overflow

Odpowiedzi:


13

W jednym wymiarze brzmi to jak regresja beta (z lub bez zmiennej dyspersji). Jest to model regresji ze zmienną zależną rozkładu beta, naturalnie ograniczoną 0-1. Pakiet R jest betareg i jest tutaj artykuł opisujący jego użycie .
W przypadku więcej niż dwóch proporcji zwykłe rozszerzenie dystrybucji Beta prowadzi do regresji Dirichleta. Dostępny jest pakiet R DirichletReg , opisany np . Tutaj .

Istnieje kilka powodów, dla których nie należy używać łączy logit i wielomianowej regresji logistycznej dla prawdziwych danych kompozycyjnych, głównie ze względu na to, jakie silne założenia sugerują dla wariancji. Jeśli jednak wszystkie twoje dane są rzeczywiście znormalizowanymi liczbami (liczebności?), Te założenia mogą być poprawne i sugestia Piotra prawdopodobnie byłaby dobrym rozwiązaniem.


Dziękuję za linki, obejrzę je. DirichletReg wygląda obiecująco! Na przykład Slajd 3 linku: „Jeśli„ prawdopodobieństwo ”odpowiedzi w określonej kategorii jest rozłożone na różne opcje, podejście Dirichleta jest bardziej pouczające.” . Ponieważ nie wiedziałem, jak to zrobić za pomocą mlogit, ponieważ wybory nie muszą być wyjątkowe. Również dobry sposób prezentacji graficznej - nie myślałem o tym ...
EDi

W przypadku grafiki pomocne mogą być funkcje R splineplot i cdplot . Rzeczywiście, jeśli po prostu chciałeś dopasować linie i nie potrzebowałeś wielu mechanizmów regresji, prawdopodobnie możesz nakłonić cdplot do uzyskania odpowiednich krzywych (tylko gęstość poniżej)
sprzężony przed

Przepraszam , oczywiście chciałem wpisać powyżej spineplot .
conjugateprior

Pamiętaj, że pakiet DirichletReg jest teraz dostępny w CRAN i opublikowano winietę .
jbaums

4

Nie jestem pewien, czego dokładnie próbujesz się dowiedzieć, ale co z wielomianową regresją logistyczną z gradientem jako zmienną niezależną?

W R jednym ze sposobów na to jest funkcja mlogit w bibliotece mlogit. Zobacz tę winietę

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.