Lustige Frage. Das von @MartijnWeterings festgestellte Hauptproblem besteht darin, dass die Anzahl der Bäume in Phase 2 nur eine Teilmessung der Gesamtzahl der Bäume ist. Wenn wir jedoch die Gesamtzahl der Bäume kennen würden, könnten wir das Problem lösen, indem wir ein Modell der Anzahl der in Stufe 1 beobachteten Nüsse unter Berücksichtigung der Anzahl der Bäume in Stufe 1 erstellen und dann die Anzahl der Nüsse in Stufe 2 unter Verwendung der vorhersagen Anzahl der Bäume in Stufe 2. Unsere Strategie in dieser Antwort besteht daher darin, zuerst die Anzahl der Bäume in Stufe 2 zu schätzen und dann ein Modell der Nüsse zu erstellen, denen Bäume in Stufe 1 gegeben wurden.
Notation und Annahme
Im Folgenden gehe ich davon aus, dass die Stichprobe von Bäumen und Eichhörnchen in allen Phasen zufällig ist. Lassen bezeichnet die Summe aller Nüsse von Eichhörnchen gesammelt in Phase 1. Sei die Gesamtzahl der Bäume bezeichnen Eichhörnchen an in Phase 1. Es sei Nuss gespeichert bezeichnet die unbeobachtete Summe von Nüssen gesammelt durch Eichhörnchen in Phase 2 und sei die Anzahl der Bäume, in denen Eichhörnchen Nüsse in Phase 2 gespeichert hat. Schließlich sei die teilweise Anzahl der beobachteten Bäume, wobei ,n1iit1iin2jjt2jjk2jk2j≤t2j
Anzahl der Bäume in Stufe 2
Wie von @MartijnWeterings festgestellt, ist immer kleiner oder gleich der Gesamtzahl der Bäume in Phase 2, was unbekannt ist. Unser Ziel ist es daher, so genau wie möglich zu schätzen . Glücklicherweise haben wir einige Informationen zu . Abhängig von Ihrem Stichprobenentwurf in Phase 2 besteht eine Wahrscheinlichkeit dass ein Eichhörnchen an einem der insgesamt von ihm besuchten gefangen wird . Die Wahrscheinlichkeit von ist somit mit den Parametern und binomisch . Wir beobachten jedoch das Binomial ; die Anzahl der Bäumek2jt2jt2jt2jpt2jk2jt2jpk2jt2jist jedoch bei nicht binomial verteilt . Ich war mir über die genaue Verteilung nicht sicher und stellte daher auf Mathematics-StackExchange eine Frage dazu . Ich erhielt die nützliche Antwort, dass die Wahrscheinlichkeitsmassenfunktion von mit und gegeben ist durch
für alle die die Erwartung . Wenn wir also und , könnten wir schätzen . Wie gesagt, Wahrscheinlichkeitk2jt=t2jk=k2jpP(t;k,p)=(t−1k)pt(1−p)(t−k),t∈{k,...,∞}.
jE(t)=k/pk2jpt^2j=k2j/pphängt von Ihrem Stichprobendesign ab, aber zum Glück können wir es aus den Daten als
so dass .p^=∑jk2j∑it1i
t^2j=k2j/p^
Schätzung unter Proportionalitätsannahme
Lassen
π=1#S1∑in1it1i
ist der durchschnittliche Anteil der Nüsse, die ein Eichhörnchen an einem Baum hinterlassen hat. Eine erste Schätzung der Gesamtzahl der Nüsse des Eichhörnchens istj
n^2j=πt^2j.
Schätzung anhand der Beziehung zwischen Nüssen und Bäumen in Phase 1
Dies mag unbefriedigend erscheinen, da nicht berücksichtigt wird, dass zwischen und andere Beziehung als eine einfache proportionale besteht. Zum Beispiel können wir uns Eichhörnchen vorstellen, die das seltsame Verhalten haben, weniger Nüsse pro Baum zu hinterlassen, je mehr Nüsse ihnen zur Verfügung stehen. Dann würde die Gesamtzahl der Nüsse mit nicht proportional zunehmen und stattdessen abflachen. Daher könnten wir uns für ein Modell entscheidenntnt
n1i=f(t1i,θ)+ϵi
Dabei ist eine nichtlineare Funktion mit den Parametern Theta und ein Messfehlerterm. Eine naheliegende Wahl könnte seinfϵi
n1i=θ0+θ1log(t1i)+ϵi
mit iid normal mit 0 Erwartung. Das Modell könnte durch nichtlineare kleinste Quadrate oder maximale Wahrscheinlichkeit angepasst werden. Ein Schätzer wäre dannϵi
n^2j=θ0^+θ1^log(t^2j)
Natürlich können auch andere funktionale Formen verwendet werden oder Sie können flexible Modellierungstechniken verwenden, um die funktionale Beziehung zu approximieren, z. B. zufällige Wälder (Wortspiel beabsichtigt).
Simulationen
Funktioniert das? Lass es uns versuchen. Ich simuliere Daten R
gemäß den folgenden Ideen. Die Wahrscheinlichkeit, dass ein Eichhörnchen Nüsse sammelt, ist durch . Ein Eichhörnchen kommt dann am ersten Baum an und versteckt Nüsse, wobei und . Es versteckt sich weiterhin bei Nüssen, bis es am Baum ankommt und Nüsse mehr hat. Dies geschieht unabhängig davon, ob Sie es in Phase 1 oder 2 beobachten. In Phase 1 beobachten Sie jedoch alle , während Sie in Phase 2 eine Stichprobe aus n+1n∼Poisson(20)h1+1h1∼Poisson(λ)λ∼Γ(60/n,1)1+(h2,...,ht)tht{h1,...,ht}. Wie gesagt, ich davon aus, dass Sie in Phase 2 eine einfache Zufallsstichprobe von Bäumen haben und daher (den von Eichhörnchen j besuchten k-ten Baum) mit der Wahrscheinlichkeit (unten im Code, den ich diese Kürzung nenne) beobachten.hkjp
Ich probiere jetzt 1000 Eichhörnchen in Phase 1. Die folgende Darstellung zeigt die Beziehung zwischen der Gesamtzahl der Bäume und der Gesamtzahl der gesammelten Nüsse. Es ist ersichtlich, dass es in dieser Beziehung über einen Zerfall gibt .t
Ich probiere jetzt in Stufe 2 mit und betrachte drei Schätzer. Zuerst der Schätzer unter Verhältnismäßigkeit. Zweitens erstelle ich einen Schätzer, der das bedingte Mittel von auf jeder beobachteten Ebene von als Schätzung für bei . Für das Benchmarking verwende ich erneut das bedingte Mittel von auf jeder beobachteten Ebene von als Schätzung für , jetzt jedoch für die wahre Anzahl der Bäume in Phase 2. Dieser Schätzer ist in der Praxis natürlich nicht verfügbar.p=0.5n1t1n2t^2n1t1n2t2
Für zwei Stichproben, jeweils eine aus Phase 1 bzw. 2, und die drei Schätzer I kommen zu den folgenden Verzerrungen: 5,61, -0,19 und 0,24. Weiterhin beobachten wir die folgenden quadratischen Mittelwertfehler: 15.3, 4.07, 3.32. Wir sehen, dass der bedingte Mittelwertschätzer mit einer angepassten Schätzung für die Anzahl der Bäume in Phase 2 fast so gut funktioniert wie der Schätzer unter Verwendung der unbekannten wahren Anzahl von Bäumen in Phase 2. Der verbleibende Fehler ist die Varianz, die möglicherweise etwas reduziert werden kann weiter durch Verwendung eines besseren Modells für bei als das nichtparametrische bedingte Mittelwertmodell.n1t1
Hier ist eine Funktion, die die Daten für die von mir erstellte Simulation erstellt.
# 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)
}
}
Und hier der in der Analyse verwendete Code:
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))