Câu hỏi thú vị. Vấn đề chính được ghi nhận bởi @MartijnWeterings là số lượng cây ở giai đoạn 2 chỉ là một phần đo lường của tổng số cây. Tuy nhiên, nếu chúng ta biết tổng số cây, chúng ta có thể giải quyết vấn đề bằng cách xây dựng mô hình số lượng hạt được quan sát ở giai đoạn 1 với số lượng cây ở giai đoạn 1, và sau đó dự đoán số lượng hạt ở giai đoạn 2 bằng cách sử dụng Do đó, số lượng cây ở giai đoạn 2. Chiến lược của chúng tôi trong câu trả lời này là trước tiên là ước tính số lượng cây ở giai đoạn 2 và sau đó xây dựng mô hình các loại hạt cho cây ở giai đoạn 1.
Ký hiệu và giả định
Sau đây, tôi giả định rằng việc lấy mẫu cây và sóc là ngẫu nhiên ở tất cả các giai đoạn. Đặt biểu thị tổng của tất cả các loại hạt được thu thập bởi sóc trong giai đoạn 1. Gọi biểu thị tổng số cây sóc lưu trữ các hạt ở giai đoạn 1. Gọi biểu thị tổng số hạt không quan sát được thu thập sóc trong giai đoạn 2 và để biểu thị số cây sóc lưu trữ hạt ở trong giai đoạn 2. Cuối cùng chúng ta hãy biểu thị số phần của cây quan sát, nơi ,n1iit1iin2jjt2jjk2jk2j≤t2j
Số cây ở giai đoạn 2
Theo ghi nhận của @MartijnWeterings luôn nhỏ hơn hoặc bằng tổng số cây ở giai đoạn 2, không xác định. Do đó, mục tiêu của chúng tôi trở thành mục tiêu ước tính càng sát càng tốt. May mắn thay, chúng tôi có một số thông tin về . Tùy thuộc vào thiết kế lấy mẫu của bạn trong giai đoạn 2, có một xác suất rằng một con sóc bị bắt tại một trong tổng số cây mà nó truy cập. Do đó xác suất của là nhị thức với các tham số và . Tuy nhiên, chúng tôi quan sát nhị thức ; số lượng câyk2jt2jt2jt2jpt2jk2jt2jpk2jt2jtuy nhiên, không được phân phối nhị thức cho . Tôi không chắc chắn về phân phối chính xác của nó và do đó tôi đã hỏi một câu hỏi về nó trên Toán học-StackExchange . Tôi đã nhận được câu trả lời hữu ích rằng hàm khối lượng xác suất của với và được đưa ra bởi
với mọi có kỳ vọng . Do đó, nếu chúng ta biết và chúng ta có thể ước tính . Như đã nói, xác suấtk2jt=t2jk=k2jpP(t;k,p)=(t−1k)pt(1−p)(t−k),t∈{k,...,∞}.
jE(t)=k/pk2jpt^2j=k2j/ppphụ thuộc vào thiết kế lấy mẫu của bạn, nhưng may mắn thay, chúng tôi có thể ước tính nó từ dữ liệu là
sao cho .p^=∑jk2j∑it1i
t^2j=k2j/p^
Ước tính theo giả định tỷ lệ
Để cho
π=1#S1∑in1it1i
là tỷ lệ trung bình của các loại hạt còn lại của một con sóc ở trên cây. Ước tính đầu tiên về tổng số hạt của sóc làj
n^2j=πt^2j.
Ước tính sử dụng mối quan hệ giữa các loại hạt và cây ở giai đoạn 1
Điều này có vẻ không thỏa đáng, bởi vì nó không tính đến việc có thể có mối quan hệ giữa và ngoài một tỷ lệ đơn giản. Ví dụ, chúng ta có thể tưởng tượng những con sóc có hành vi kỳ lạ là để lại ít hạt trên mỗi cây thì chúng càng có nhiều hạt. Sau đó, tổng số hạt sẽ không tăng tương ứng với và thay vào đó làm phẳng. Do đó chúng tôi có thể quyết định mô hìnhntnt
n1i=f(t1i,θ)+ϵi
Trong đó là hàm phi tuyến tính với tham số theta và là thuật ngữ lỗi đo lường. Một lựa chọn rõ ràng có thể làfϵi
n1i=θ0+θ1log(t1i)+ϵi
với iid bình thường với 0 kỳ vọng. Mô hình có thể phù hợp bởi bình phương tối thiểu phi tuyến tính hoặc khả năng tối đa. Một người ước tính sau đó sẽ làϵi
n^2j=θ0^+θ1^log(t^2j)
Tất nhiên các hình thức chức năng khác có thể được sử dụng hoặc bạn có thể sử dụng các kỹ thuật mô hình linh hoạt để xấp xỉ mối quan hệ chức năng, chẳng hạn như các khu rừng ngẫu nhiên (ý định chơi chữ).
Mô phỏng
Nó có hoạt động không? Hãy thử nó. Tôi mô phỏng dữ liệu R
theo các ý tưởng sau đây. Xác suất mà một con sóc thu thập hạt được đưa ra bởi . Sau đó, một con sóc đến cây đầu tiên và ẩn hạt trong đó và . Nó tiếp tục ẩn ở các hạt cho đến khi nó đến cây và hết hạt. Nó làm như vậy bất kể bạn quan sát nó trong giai đoạn 1 hay 2; tuy nhiên trong giai đoạn 1 bạn quan sát tất cả , trong khi ở giai đoạn 2 bạn quan sát một mẫu từ n+1n∼Poisson(20)h1+1h1∼Poisson(λ)λ∼Γ(60/n,1)1+(h2,...,ht)tht{h1,...,ht}. Như đã nói, tôi giả sử bạn có một mẫu cây ngẫu nhiên đơn giản ở giai đoạn 2 và do đó bạn quan sát (cây thứ k được truy cập bởi sóc j) với xác suất (bên dưới trong mã tôi gọi là cắt ngắn này).hkjp
Bây giờ tôi lấy mẫu 1000 con sóc ở giai đoạn 1. Biểu đồ dưới đây minh họa mối quan hệ của tổng số cây và tổng số hạt được thu thập. Có thể thấy rằng có một sự phân rã trong mối quan hệ đó trên .t
Bây giờ tôi lấy mẫu ở giai đoạn 2 với và xem xét ba ước tính. Đầu tiên các công cụ ước tính theo tỷ lệ. Thứ hai, tôi tạo một công cụ ước tính sử dụng giá trị trung bình có điều kiện của ở mỗi cấp độ được quan sát làm ước tính cho tại . Để đo điểm chuẩn, tôi sử dụng lại giá trị trung bình có điều kiện của ở mỗi mức được quan sát làm ước tính cho , nhưng hiện tại ở số lượng cây ở giai đoạn 2. Công cụ ước tính này tất nhiên không có sẵn trong thực tế.p=0.5n1t1n2t^2n1t1n2t2
Đối với hai mẫu, một mẫu từ mỗi giai đoạn 1 và 2, và ba công cụ ước tính tôi đến các độ lệch sau, tương ứng: 5,61, -0,19 và 0,24. Hơn nữa, chúng tôi quan sát các lỗi bình phương trung bình gốc sau: 15.3, 4.07, 3.32. Chúng ta thấy rằng công cụ ước tính trung bình có điều kiện với ước tính đã điều chỉnh cho số lượng cây ở giai đoạn 2 có hiệu suất gần như bằng công cụ ước tính sử dụng số lượng cây thực sự chưa biết ở giai đoạn 2. Lỗi còn lại có thể giảm đi một chút hơn nữa bằng cách sử dụng một mô hình tốt hơn cho cho so với mô hình trung bình có điều kiện không tham số.n1t1
Đây là một chức năng tạo dữ liệu cho mô phỏng tôi đã thực hiện.
# 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)
}
}
Và đây là mã được sử dụng trong phân tích:
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))