Khoảng tin cậy từ dữ liệu raster


8

Tôi có dữ liệu raster đại diện cho phân phối xác suất, tức là mỗi ô có một giá trị xác suất (trong trường hợp của tôi xác suất có thể tìm thấy động vật trong ô) và tất cả các ô đều tăng tới 100% (tôi biết chắc chắn là động vật là trong phạm vi của raster của tôi). Tôi muốn có thể tạo dữ liệu vectơ cho các giá trị độ tin cậy. Ví dụ: dòng / đa giác 95% biểu thị ranh giới trong đó tôi tin tưởng 95% rằng tôi sẽ tìm thấy con vật.

Tương tự, nếu tôi có ước tính mật độ hạt nhân, làm cách nào để tạo dòng XX / đa giác giáp phần dày nhất của raster chứa XX% tổng dân số?

Tôi sẵn sàng sử dụng ArcGIS hoặc phần mềm nguồn mở. Nếu không có công cụ để thực hiện điều này cho tôi, thuật toán tôi có thể thực hiện là gì?


Các giải pháp toán học gần đây đã xuất hiện tại mathicala.stackexchange.com/questions/20464 .
whuber

Câu trả lời:


3

Sự tự tin không phải là một khái niệm có thể áp dụng, mặc dù nó rất giống nhau. Câu hỏi nghe có vẻ giống như bạn muốn xác định vùng nhỏ nhất có tổng xác suất ít nhất 95%. Vùng này có thể thu được (ít nhất là về mặt khái niệm) bằng cách sắp xếp tất cả các xác suất và tích lũy chúng từ cao nhất đến thấp nhất cho đến khi tổng một phần đầu tiên bằng hoặc vượt quá 95%, sau đó chọn các ô tương ứng với các giá trị đã được tích lũy. Điều này dẫn đến một giải pháp đơn giản, như được minh họa bằng ví dụ R (nguồn mở) này:

library(raster)
set.seed(17)                   # Seed a reproducible random sequence
nr <- 30                       # Number of rows                    
nc <- 50                       # Number of columns
#
# Create a zone raster for normalizing the probabilities.
#
zone <- raster(ncol=nc, nrow=nr)
zone[] <- 0
#
# Create a probability raster (for illustrating the algorithm later).
#
p <- raster(ncol=nc, nrow=nr)
p[] <- (1:(nc*nr) - 1/2) / (nc*nr) + rnorm(nc*nr, sd=0.5)
p <- abs(focal(p, ngb=5, run=mean))
z <- zonal(p, zone, stat='sum')
p <- p / z[[2]] # This normalizes p to sum to unity as required
#------------------------------------------------------------------------------#
#
# The algorithm begins here.
#
pvec <- sort(getValues(p), decreasing=TRUE) # The probabilities, sorted
d <- cumsum(pvec)                           # Cumulative probabilities
dpos <- d[d <= 0.95]                        # Position to stop
region <- p                                 # Initialize the output
region[p < pvec[length(dpos)]] <- NA        # Exclude the last 5% of the probability
plot(region)                                # Display the result

Dưới đây là hình ảnh kết quả của vùng xác suất 95% với xác suất ban đầu được hiển thị bằng màu: chúng tổng hợp chỉ hơn 95%, bằng cách xây dựng và loại bỏ ngay cả giá trị nhỏ nhất sẽ giảm tổng xuống dưới 95%. Vùng màu trắng ở trên cùng bao gồm 5% xác suất còn lại bên ngoài vùng này. Đường viền mong muốn là ranh giới giữa các ô trắng và các ô màu.

Kết quả

Phương pháp tương tự sẽ hoạt động trên lưới KDE.

Không có giải pháp ArcGIS đơn giản cho vấn đề này.


Ha ha, hời hợt mô tả chính xác sự hiểu biết của tôi về xác suất. Cảm ơn rất nhiều vì a) diễn giải chính xác câu hỏi kém của tôi và b) cung cấp một câu trả lời rõ ràng.
Regan Sarwas

0

Trong ArcGIS ...

  • Công cụ thống kê không gian> Công cụ phân loại lại> Công cụ phân loại lại
    • Tạo 2 phương thức phân loại lại:
    • Giá trị cũ = 0-94,99 | NewValues ​​= 0
      OldValues ​​= 95-100 | Giá trị mới = 1

Điều này sẽ tạo ra một raster mới với 2 giá trị, 0 = khoảng tin cậy bên ngoài, 1 = bên trong khoảng tin cậy 95%.

  • Công cụ chuyển đổi> Từ công cụ raster> Công cụ raster sang đa giác
    • Đầu vào = Trường raster được phân loại lại
      = Giá trị

Điều này sẽ tạo ra một đa giác vectơ với 2 FID, một với hình dạng khoảng tin cậy 95% của bạn và khu vực raster còn lại của bạn. Tôi sẽ đề nghị khám phá tùy chọn đơn giản hóa để xem kết quả nào phù hợp với nhu cầu của bạn hơn.

FYI, áp dụng cùng một phương pháp để có được các đa giác cho ước tính Mật độ Kernal của bạn.


Có lẽ tôi đã không rõ ràng (tôi không giỏi lắm với xác suất). Để phục hồi, tổng giá trị trong tất cả các ô của tôi là 1.0, do đó, với phân bố đồng đều trong lưới 100x100, mỗi ô sẽ có giá trị 1/10000. Bây giờ hãy tưởng tượng các giá trị ô khác nhau từ một số lớn hơn một chút gần trung tâm đến các giá trị 0 gần các cạnh (vẫn có tổng là 1.0). Nếu tôi bắt đầu loại bỏ các ô có giá trị nhỏ nhất, cuối cùng tôi sẽ bị bỏ lại với tổng số 0,95. Làm thế nào để tôi làm điều này để tôi có thể phân loại lại như bạn đã đề xuất.
Regan Sarwas

Thật lạ lùng, từ sự hiểu biết về việc sử dụng các trình quét để hiển thị biểu diễn dữ liệu thống kê, giá trị xác suất của bạn (giá trị ô) sẽ ở bất kỳ đâu từ 0 đến 100 (hoặc trong trường hợp của bạn là 0 đến 1) và phân phối các giá trị này (giá trị ô) sẽ đại diện một sự phân phối bình thường.
Michael Markieta

Nếu đúng, chúng ta có thể phân loại lại dữ liệu bằng phương pháp được đề xuất ở trên, mặc dù các giá trị thay thế là 0,99999 và 0,95 cho 94,99 và 95
Michael Markieta

1
Giải pháp này không phản ánh lưới được mô tả trong câu hỏi. Hãy nghĩ về lưới đầu vào như thể hiện phân phối xác suất hai chiều rời rạc hơn là "biểu diễn thống kê dữ liệu". Trong các trường hợp thực tế (lưới trung bình đến lớn, phạm vi động vật phân bố vừa phải) hầu hết các xác suất sẽ cực kỳ nhỏ, ít hơn 95%, do đó, việc phân loại lại sẽ chỉ xóa sạch tất cả thông tin: mọi thứ đều biến thành không.
whuber
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.