Analisar proporções


13

Eu tenho um conjunto de dados contendo várias proporções que somam 1. Estou interessado na alteração dessas proporções ao longo de um gradiente (veja abaixo, por exemplo, dados).

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()

insira a descrição da imagem aqui

Informações adicionais: não precisa ser necessariamente linear, fiz isso apenas para facilitar o exemplo. As contagens originais a partir das quais essas proporções são calculadas também estão disponíveis. O conjunto de dados real contém mais variáveis ​​que somam 1 (por exemplo, B1, B2 e B3, C1 a C4, etc) - portanto, uma dica para uma solução multivariada também seria útil ... Mas, por enquanto, continuarei com a univariada lado das estatísticas.

Pergunta: Como se pode analisar esse tipo de dados? Eu li um pouco, e talvez um modelo multinomial ou um glm seja adequado? - Se eu executar 3 (ou 2) glms, como posso incorporar a restrição de que os valores previstos somam 1? Não quero plotar apenas esse tipo de dados, também quero fazer uma regressão mais profunda, como análise. Eu preferencialmente quero usar R - como posso fazer isso em R?


O comando proprcsplineno Stata pode ser o que você está procurando (eu sei que você deseja usar R, mas talvez isso possa ser um ponto de partida): proprcspline calcula um spline cúbico restrito, suave com proporções de observações em cada categoria de yvar dado xvar, e os representa como um gráfico de área empilhada. Opcionalmente, essas proporções suavizadas podem ser ajustadas para um conjunto de variáveis ​​de controle (cvars).
22612 boscovich

Você poderia elaborar o que significa "interessado em"? Deseja apenas traçar as proporções contra o gradiente? Ou você tem uma análise mais profunda em mente? Se sim, qual é a sua natureza - o que exatamente você espera aprender com esses dados? Além disso, você tem as contagens originais disponíveis (o que seria bom) ou apenas as proporções? Você poderia dizer um pouco mais sobre em que consistem esses dados e como eles são coletados?
whuber

1
@ whuber: Eu quero fazer uma análise mais profunda com esses dados. Minha hipótese é que as proporções mudarão com o gradiente. As contagens também estão disponíveis.
Edi 12/12/2012

1
Parece que você tem dados de composição. Não sei muito sobre isso, mas o trabalho de Aitchison é o lugar para começar. Há um pacote, composições, no CRAN.
Aaron saiu de Stack Overflow

Respostas:


13

Em uma dimensão, isso parece um trabalho de regressão beta (com ou sem dispersão variável). Este é um modelo de regressão com variável dependente distribuída em beta, naturalmente com restrição de 0-1. Um pacote R é betareg e um artigo descrevendo seu uso está aqui .
Por mais de duas proporções, a extensão usual da distribuição Beta leva à regressão de Dirichlet. Um pacote R DirichletReg está disponível, descrito, por exemplo, aqui .

Existem algumas razões para não usar links de logit e regressão logística multinomial para dados composicionais verdadeiros, principalmente para fazer com que fortes suposições implicam para a variação. No entanto, se os seus dados estão todas as contagens realmente normalizada (abundâncias?), Essas suposições podem ser correto e sugestão de Peter provavelmente seria o caminho a percorrer.


Obrigado pelos links, vou dar uma olhada neles. DirichletReg parece promissor! Por exemplo, slide 3 do seu link: "Se a 'probabilidade' de responder em uma determinada categoria for espalhada pelas opções, uma abordagem Dirichlet será mais informativa". . Porque eu não sabia como fazer isso com o mlogit, porque as opções não precisam ser únicas. Também uma boa maneira de respresentation gráfica - não ter pensado nisso ...
EDi

Para gráficos, você pode achar as funções R splineplot e cdplot úteis. Na verdade se você só queria as linhas de embutidos e não precisa de um monte de máquinas de regressão, então você provavelmente poderia coaxial cdplot em dar-lhe as curvas relevantes (que é apenas a densidade embaixo)
conjugateprior

Desculpe, eu pretendia digitar spineplot acima, obviamente.
conjugateprior

Observe que o pacote DirichletReg agora está disponível no CRAN e uma vinheta foi publicada.
jbaums

4

Não sei exatamente o que você está tentando descobrir, mas e uma regressão logística multinomial com gradiente como variável independente?

Em R, uma maneira de fazer isso é a função mlogit na biblioteca mlogit. Veja esta vinheta

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.