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. Deixein1 i denota a soma de todas as nozes coletadas pelo esquilo Eu 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 k2j≤t2j,
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)=(t−1k)pt(1−p)(t−k),t∈{k,...,∞}.
jE(t)=k/pk2jpt^2j=k2j/ppp^=∑jk2j∑it1i
t^2j=k2j/p^
Estimativa sob premissa de proporcionalidade
Deixei
π=1#S1∑in1it1i
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 R
acordo com as seguintes idéias. A probabilidade de um esquilo coletarn+1 nozes é dado por n∼Poisson(20). Um esquilo chega à primeira árvore e se escondeh1+1 nozes onde h1∼Poisson(λ) 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.
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))