Usando medições parciais da variável de saída na modelagem

7

Minha pergunta é: como podemos usar dados de saída medidos parcialmente em um conjunto de treinamento? Isso é vago, então eu o concretizo em um conto caprichoso.

Esquilos têm nozes, mas quantos?

Configuração

Existe um conjunto S de esquilos e um conjunto Tde árvores na floresta. EsquilosiS tem niNnozes. Os esquilos armazenam suas nozes em uma árvore ou em muitas árvores diferentes na floresta. Desejamos prever quantas nozes um esquilo coletou a partir de recursos de entrada: peso do esquilo e capacidade da bochecha.

Fase de pesquisa 1:

Monitoramos um subconjunto de esquilos. Realizaram suas medições (capacidade de peso e bochecha) e contaram

  1. quantas nozes eles coletaram e
  2. em quantas árvores eles os armazenaram

(por exemplo, o esquilo nº 55 armazenou 5 nozes em uma árvore, 10 nozes em outra e 500 nozes em outra [que 3 árvores são desconhecidas])

Fase de pesquisa 2:

Monitoramos um subconjunto de árvores. Quando um esquilo chegou a uma de nossas árvores, nós as identificamos (para saber se elas foram para outra árvore em nosso subconjunto mais tarde), as medimos (peso e capacidade da bochecha) e contamos quantas nozes caíram. Isso nos deu uma medição parcial da coleta de nozes para um subconjunto de esquilos.

(por exemplo, na Árvore nº 23, coletamos 10 nozes do Esquilo nº 99 e 50 no Esquilo nº 88, na Árvore nº 24 coletamos ...)

(observação importante: os IDs dos esquilos não persistem ao longo das fases.)

Questão

Suponha que desejemos modelar o número total de porcas de um esquilo da fase 2. Como podemos usar suas medições parciais de porcas para aumentar os resultados da modelagem?

Além disso, como podemos introduzir saídas parcialmente medidas no conjunto de treinamento?

colorlace
fonte
Você sabe o número de árvores em que foram capturadas na fase 2?
Tomka
2
E na fase 1: você conhece apenas a contagem total de castanhas que coletaram ou conhece por árvore? (Por exemplo, um esquilo recolheu 5 porcas de árvore 1, 3 porcas de árvore 2 e 10 nutos de árvore 3; Squrrel 2 recolheu 7 porcas a partir de (um diferente) uma árvore, etc ..
Tomka
Qual fração do total é o subconjunto de árvores da fase 2 (se essa fração for grande, é possível estimar razoavelmente o número total de nozes coletadas por um esquilo com base no subconjunto de nozes dividido por essa fração)
Sextus Empiricus
Por favor, seja mais específico, você sabe quantas nozes elas armazenaram em cada árvore na fase 1 ou 2 ou ambas?
Tomka
11
Pergunta interessante. Coincidentemente, no exato momento em que cliquei neste link, um esquilo veio comer algumas nozes espalhadas por ele no meu quintal! A fase 1 está em andamento ...
user20160

Respostas:

3

Pergunta divertida. O principal problema, conforme observado por @MartijnWeterings, é que o número de árvores na fase 2 é apenas uma medida parcial do número total de árvores. Se soubéssemos o número total de árvores, no entanto, poderíamos resolver o problema construindo um modelo do número de nozes observado no estágio 1, dado o número de árvores no estágio 1 e, em seguida, prever o número de nozes no estágio 2 usando o número de árvores no estágio 2. Nossa estratégia nesta resposta é, portanto, estimar primeiro o número de árvores no estágio 2 e depois construir um modelo de nozes dadas árvores no estágio 1.

Notação e suposição

A seguir, assumo que a amostragem de árvores e esquilos é aleatória em todos os estágios. Deixein1i denota a soma de todas as nozes coletadas pelo esquilo i na fase 1. Deixe t1i denotar o número total de árvores esquilo i porcas armazenadas na fase 1. Deixe n2j denota a soma não observada de nozes coletadas pelo esquilo j na fase 2 e deixe t2j denotar o número de árvores esquilo j porcas armazenadas na fase 2. Finalmente, deixe k2j denotar o número parcial de árvores observadas, onde k2jt2j,

Número de árvores no estágio 2

Como observado por @MartijnWeterings k2j é sempre menor ou igual ao número total de árvores t2jna fase 2, que é desconhecida. Nosso objetivo passa a ser o de estimart2jo mais próximo possível. Felizmente, temos algumas informações sobret2j. Dependendo do seu projeto de amostragem na fase 2, existe uma probabilidadep que um esquilo é capturado em um dos t2járvores que visita. A probabilidade dek2j é, portanto, binomial com parâmetros t2j e p. No entanto, observamos binômiosk2j; o número de árvorest2j, no entanto, não é binomial distribuído, dado k2j. Eu não tinha certeza sobre sua distribuição exata e, portanto, fiz uma pergunta sobre isso no Mathematics-StackExchange . Recebi a resposta útil de que a função massa de probabilidade det=t2j com k=k2j e pé dado por para todo que tem expectativa . Portanto, se nós sabemos e poderíamos estimar . Como dito, a probabilidade depende do seu projeto de amostragem, mas felizmente podemos calculá-la a partir dos dados como para que .

P(t;k,p)=(t1k)pt(1p)(tk),t{k,...,}.
jE(t)=k/pk2jpt^2j=k2j/pp
p^=jk2jit1i
t^2j=k2j/p^

Estimativa sob premissa de proporcionalidade

Deixei

π=1#S1in1it1i

seja a proporção média de nozes deixadas por um esquilo em uma árvore. Uma primeira estimativa do número total de nozes do esquilo éj

n^2j=πt^2j.

Estimativa usando relação entre nozes e árvores na fase 1

Isso pode parecer insatisfatório, porque não leva em conta que pode haver uma relação entre n e tdiferente de um simples proporcional. Por exemplo, podemos imaginar esquilos tendo o estranho comportamento de deixar menos nozes por árvore, mais nozes eles têm à sua disposição. Então o número total de nozesn não aumentaria proporcionalmente com te achatar. Por isso, poderíamos decidir modelar

n1i=f(t1i,θ)+ϵi

Onde f é uma função não linear com parâmetros theta e ϵié um termo de erro de medição. Uma escolha óbvia pode ser

n1i=θ0+θ1log(t1i)+ϵi

com ϵiiid normal com 0 expectativa. O modelo pode ser ajustado por mínimos quadrados não lineares ou máxima verossimilhança. Um estimador seria então

n^2j=θ0^+θ1^log(t^2j)

É claro que outras formas funcionais podem ser usadas ou você pode usar técnicas de modelagem flexíveis para aproximar o relacionamento funcional, como florestas aleatórias (trocadilhos).

Simulações

Isto funciona? Vamos tentar. Simulo dados de Racordo com as seguintes idéias. A probabilidade de um esquilo coletarn+1 nozes é dado por nPoisson(20). Um esquilo chega à primeira árvore e se escondeh1+1 nozes onde h1Poisson(λ) e λΓ(60/n,1). Ele continua escondido em1+(h2,...,ht) nozes até chegar à árvore te está sem nozes. Faz isso independentemente de você observá-lo na fase 1 ou 2; no entanto, na fase 1, você observa todosht, enquanto na fase 2 você observa uma amostra de {h1,...,ht}. Como já foi dito, presumo que você tenha uma amostra aleatória simples de árvores na fase 2 e observehkj (a k-ésima árvore visitada pelo esquilo j) com probabilidade p (abaixo no código eu chamo isso de truncamento).

Agora, amostro 1000 esquilos na fase 1. O gráfico abaixo ilustra a relação do número total de árvores e número total de nozes coletadas. Pode-se ver que há uma deterioração nesse relacionamento entret.

insira a descrição da imagem aqui

Agora eu amostro no estágio 2 com p=0.5e considere três estimadores. Primeiro o estimador sob proporcionalidade. Segundo, crio um estimador que usa a média condicional den1 em cada nível observado de t1 como uma estimativa para n2 às t^2. Para benchmarking, uso novamente a média condicional den1 em cada nível observado de t1 como uma estimativa para n2, mas agora no número real de árvores t2 na fase 2. É claro que este estimador não está disponível na prática.

Para duas amostras, uma de cada uma das fases 1 e 2, respectivamente, e os três estimadores, chego aos seguintes vieses, respectivamente: 5,61, -0,19 e 0,24. Além disso, observamos os seguintes erros quadráticos médios da raiz: 15,3, 4,07, 3,32. Vemos que o estimador médio condicional com uma estimativa ajustada para o número de árvores na fase 2 tem desempenho quase tão bom quanto o estimador que usa o número verdadeiro desconhecido de árvores na fase 2. O erro restante é a variação que talvez possa ser reduzida um pouco ainda mais, usando um modelo melhor paran1 dado t1 que o modelo de média condicional não paramétrico.


Aqui está uma função que cria os dados para a simulação que eu fiz.

# A squirrel collects nuts
squirrel_set = function(n, trunc= FALSE){
  nuts = rpois(n, 20) + 1
  nut_seq = list()
  for(i in 1:n){
    j = 1
    nuts_left = nuts[i]
    nuts_hidden = numeric()
    # squirrel hides nuts at tree j
    while(nuts_left>0){
      if(j  == 1) {lambda = rgamma(1,60/nuts_left,1) } 
      if(lambda < 1){ lambda = 1}
      nuts_hidden[j]  = rpois(1, lambda) + 1
      if(nuts_left - nuts_hidden[j] <0){
        nuts_hidden[j] = nuts_left
        nuts_left = 0
      }
      else{ nuts_left =  nuts_left - nuts_hidden[j] }
      j = j+1
    }
    nut_seq[[i]] = nuts_hidden
  } 
  # Truncated sample
  # A squirrel is caught with probability .5 at a tree 
  # (or a random half of the trees are observed and a squirrel is always caught)
  if(trunc == TRUE){
    trees = sapply(nut_seq , length)
    nut_seq_obs = list()
    for(i in 1:length(nut_seq)){
      caught = rbinom(trees[i],1,.5)
      nut_seq_obs[[i]] = nut_seq[[i]][as.logical(caught)]
    }
    return( list(nut_seq,nut_seq_obs) )
  }
  else{
    return(nut_seq)
  }
}

E aqui o código usado na análise:

set.seed(12345)
n = 1000
# Phase 1
nut_seq1 = squirrel_set(n)

# Phase 2
nut_seq2 = squirrel_set(n, trunc = TRUE)
nut_seq2_true = nut_seq2[[1]]
nut_seq2_trunc = nut_seq2[[2]]

# Trees and nuts at phases 1 and 2
t1  = sapply(nut_seq1,length, simplify = TRUE) # Trees seen at phase 1

k   = sapply(nut_seq2_trunc , length) # Trees seen at phase 2
nut_seq2_trunc = nut_seq2_trunc[k>0] # Squirrels with k=0 have avtually not been observed
nut_seq2_true = nut_seq2_true[k>0]
k   = k[k>0]
n1  = sapply(nut_seq1,sum, simplify = TRUE) # Trees seen at phase 1
n2  = sapply(nut_seq2_true,sum, simplify = TRUE) # Trees at phase 2 (unobserved)
t2  = sapply(nut_seq2_true,length, simplify = TRUE) # Trees at phase 2 (unobserved)

# Plot
plot( t1, n1, xlab='Trees at phase 1', ylab='Total number of nuts at phase 1')
mnuts = numeric()
for(i in 1:max(t1)){
  mnuts[i] = mean(n1[t1 == i])
}
lines( 1:max(t1), mnuts, col=2)
legend("bottomright",lty=1, lwd=2, col='2', legend='Conditional mean')

# Estimators
p           = sum(k) / sum(t1) # Estimate of observational probability at phase 2
t2_est      = k/p  # Estimate of total number of trees for each squirrel at phase 2

n2_prop_est = t2_est * mean(sapply(n1,sum, simplify = TRUE)/t1 )  # proportionality

mnuts = numeric()
for(i in 1:max(t1)){
  mnuts[i] = mean(n1[t1 == i]) # Conditional mean at each level of trees at phase 1
}
n2_regest = mnuts[round(t2_est)] # Non-parametric regression estimate of n2
n2_regest_truet2 = mnuts[t2] 

# Bias and Variance
mean( n2_prop_est - n2)
sqrt(mean( (n2_prop_est - n2)^2 ))

mean( n2_regest - n2 , na.rm=TRUE)
sqrt(mean( (n2_regest - n2)^2 , na.rm=TRUE))

mean( n2_regest_truet2 - n2 , na.rm=TRUE)
sqrt(mean( (n2_regest_truet2 - n2)^2 , na.rm=TRUE))
tomka
fonte
2
Esta é uma resposta muito bem escrita e usando a fase 1 para obter alguma relação entre n1i e t1iparece o caminho a percorrer. Mas, o problema não é resolvido tão facilmente. ot2ina fase 2 é uma coisa diferente . É baseado em medições de um subconjunto . Se alguém tiver sorte, existe uma relação clara entre o número total de nozes e o número de nozes por árvore. Como esse 'número de nozes por árvore' pode ser razoavelmente estimado na fase 2. #
618 Sextus
Sua consideração e trocadilhos são apreciados, e eu também gosto da idéia de encontrar relações entre o número de nozes e o número de árvores. @MartijnWeterings está correto. O esquilo j armazenou nozes em pelo menos duas árvores. Você parece estar lidando com isso em seu rascunho obsoleto com "agora poderíamos olhar a fase 1 apenas nos esquilos que armazenavam nozes com o mesmo número de árvores ou mais" . Eu acho essa ideia muito legal! Parece que você está simulando medições parciais de porcas com as medições totais de porcas. É para onde meus pensamentos estavam indo.
Colorlay #
@timwiz Obrigado. Você e MartijnWeterings estão corretos, isso ainda é um problema na abordagem de modelagem de regressão / tn. Eu tenho uma idéia de como consertar isso, porque acredito que podemos estimar a probabilidade de o esquilo ter visitadoT2 árvores no total, se vimos em t2járvores Quanto à idéia preterida: sim, é isso que eu tinha em mente. Primeiro tentarei corrigir a abordagem de regressão e depois continuarei pensando sobre essa idéia.
Tomka
11
@timwiz Revisei completamente minha resposta para levar em conta o número desconhecido de árvores na fase 2. Adicionei uma simulação que demonstra seu desempenho. Também observei o estimador de autoinicialização que desconsiderei em uma versão anterior desta resposta no trabalho não mostrado aqui. Esse estimador teve, no entanto, desempenho pior do que o estimador sobre o qual relato e, portanto, não o discuto aqui (a resposta já é bastante longa e eu queria relatar a descoberta relevante).
Tomka
@timwiz Falta algo na resposta ou nas perguntas abertas?
21418 Tomka escreveu
2

Na fase 1, você pode criar um modelo que relacione o comportamento de um esquilo ao número total de nozes.

Na fase 2, você não observa exatamente as mesmas informações completas que na fase 1. Por exemplo, você não sabe quantas árvores no total são usadas por um esquilo específico. Mas você observa um pouco do comportamento do esquilo, ou seja, uma amostra da distribuição do número de nozes por árvore. A partir disso, é possível estimar a distribuição e os parâmetros que descrevem a distribuição podem ser inseridos para o modelo.

  • Portanto, na fase 1, você cria um modelo que relaciona o número total de nozes que um esquilo armazena com a distribuição das nozes por árvore para o esquilo. Como exatamente modelar isso é difícil de dizer.

    Se você acha que poderia criar algum modelo mecanicista, poderia começar com algumas análises exploratórias e percepções anteriores sobre o comportamento do esquilo para obter uma idéia sobre um modelo útil. Eu não tenho os dados e o conhecimento biológico para fazer isso nesta resposta (Uma direção óbvia pode ser ver se mais nozes por árvore também se relacionam com mais nozes no total, e possivelmente isso terá alguma relação mais complexa com o peso do esquilo e bochecha e outros fatores, como alta variação de nozes por árvore, também podem ajudar a obter uma indicação sobre o número total de árvores usadas por um esquilo)

  • Na fase 2, você fará uma estimativa dos parâmetros necessários para fazer previsões com o modelo criado na fase 1. Os parâmetros que descrevem a distribuição do número de nozes por árvore podem ser estimados a partir da amostra medida no subconjunto de árvores.

    Uma maneira simples seria ignorar os IDs da árvore e usar os dados por esquilo para estimar os parâmetros de distribuição e colocá-los no modelo a partir da fase 1.

    Um modelo mais preciso trataria os IDs das árvores como um fator aleatório, de modo que o comportamento especificamente atribuído ao esquilo possa ser melhor estimado. Para tratar as árvores como um fator aleatório, você terá que saber como as árvores podem ser um fator aleatório. Você pode adivinhar isso, mas também pode tentar aprender isso com os dados (eu diria primeiro com uma análise exploratória, verificando a correlação entre uma árvore e quantas nozes são armazenadas por esquilo e se esse efeito é independente ou se algumas árvores atraem tipos específicos de esquilos, antes de apresentar algo quantitativo.). Na fase 1, você não observa informações relacionadas aos IDs da árvore, mas na fase 2, observa e pode usar esses dados.

Então, em poucas palavras. Acho que você precisa de uma análise exploratória antes de poder fazer algo quantitativo que é mais do que a abordagem simples (simples é ignorar os IDs da árvore na fase 2 e usar apenas parâmetros de distribuição simples como entrada para o modelo cujos coeficientes são aprendidos na fase 1) .


Além disso, como podemos introduzir saídas parcialmente medidas no conjunto de treinamento?

Quando você cria o modelo em 1 usando parâmetros que descrevem a distribuição das nozes por árvore para um esquilo específico, é necessário levar em consideração que deve ser possível estimar razoavelmente esses números na fase 2 e que erros não afetarão o modelo demais. Por exemplo, média e variância (ou outras estatísticas simples) podem ser razoavelmente estimadas a partir das amostras na fase 2 (supondo que sua amostra não seja muito pequena), mas momentos de ordem superior podem não ser.

Sextus Empiricus
fonte