Bagaimana cara memilih metode interpolasi raster?


8

Saya bekerja dengan dataset ~ 1,3 juta bangunan tempat tinggal; masing-masing dijelaskan oleh variabel yang terdistribusi normal mulai dari 0 hingga 100. Dataset mencakup seluruh Swiss sehingga jelas ada area dengan kepadatan titik sangat padat dan sangat jarang.

Batasan yang dikenakan oleh penyedia data kami adalah bahwa kami tidak dapat merilis kumpulan data yang lebih terperinci dari 5 bangunan.

Saya sedang berpikir tentang mengubah data titik ini ke permukaan raster. Tujuan utama saya dalam latihan ini adalah untuk menciptakan permukaan yang meminimalkan kesalahan yang akan muncul ketika seseorang mencoba untuk mendapatkan nilai poin dari raster ini dengan mengekstraksi data di lokasi titik kepentingan mereka (dibandingkan dengan mengekstraksi dari dataset asli dari lokasi titik).

Saya ingin tahu metode apa yang paling cocok untuk melakukan itu. Ada beberapa yang bisa dipilih dalam kotak Spatial Analyst dan bahkan lebih dalam satu Geostatistic jadi saya sangat menghargai bantuan di mana untuk memulai.


1
Apa yang diwakili oleh variabel?
Dan C

@DanC Ini adalah ukuran yang sama dengan melakukan indeks kekurangan .
radek

Apakah Anda ingin memiliki sel raster hanya di mana Anda memiliki titik dan NoData di sekitar, atau Anda ingin interpolasi antara titik-titik? Ukuran sel apa yang ingin Anda pilih, dan berapa jarak minimum dan maksimum antara titik, kira-kira? Maksud saya berapa banyak poin yang dapat jatuh ke dalam satu sel (mungkin> 5) dan berapa banyak sel tanpa poin.
nadya

@nadya Ad1: Saya senang dengan kedua solusi dan akan memilih salah satu yang memperkenalkan kesalahan paling sedikit. Ad2: Saya tidak terbatas dalam ukuran sel selama saya memenuhi persyaratan privasi; jarak minimum bisa dalam beberapa meter, maksimal? Yah, mungkin diagonal dari seluruh negeri? Ad3: Untuk grid 100m jumlah poin mungkin hingga ~ 50; dan jumlah penjualan kosong - berpotensi sangat besar.
radek

Jawaban:


10

Tampaknya pertanyaan ini terkait dengan pertanyaan sebelumnya yang menanyakan tentang penyamaran data menggunakan grid tidak teratur. Jika kami menerima bahwa kisi-kisi biasa akan digunakan, maka tampaknya itu

  • Sebagian besar sel harus cukup besar untuk menutupi lima atau lebih bangunan dan

  • Ketika sel tidak mencakup lima bangunan, nilainya harus diubah dengan cara yang tidak dapat diprediksi (tetapi dikendalikan).

Bagaimana Anda mengukur kesalahan menentukan solusi terbaik. Biarkan nilai yang akan dihitung dalam sel menjadi y dan biarkan nilai bangunan yang berada di dalam (atau setidaknya tumpang tindih) sel itu menjadi x1 , x2 , ..., xk . Lebih jauh, anggaplah bahwa setiap bangunan memiliki "tingkat minat" non-negatif (yang mungkin sebanding dengan jumlah penghuni di dalamnya), untuk digunakan sebagai pengganti berapa kali raster Anda akan digunakan untuk memperkirakan bahwa nilai bangunan. Mari kita sebut level-level ini w1 , ..., wk masing-masing dan biarkan w menentukan jumlah (bukan nol) mereka.

  1. Kesalahan absolut rata - rata adalah rata-rata aritmatika dari ukuran kesalahan | y - xi | karena saya rentang indeks bangunan. Ini diminimalkan dengan memilih y untuk menjadi median xi .

  2. The kesalahan maksimum adalah yang terbesar di antara max (| y - xi |) sebagai i berkisar di atas indeks bangunan. Ini diminimalkan dengan memilih y untuk menjadi midrange dari ( xi ) (rata-rata dari max dan min). Ini sangat dipengaruhi oleh nilai outlying tunggal, jadi median mungkin lebih disukai.

  3. The error diharapkan adalah rata-rata tertimbang | y - xi | dengan bobot yang diberikan oleh wi / w . Ini diminimalkan dengan menjadikan y sebagai median tertimbang dari xi (tetapi tidak ada GIS yang melakukan perhitungan ini untuk Anda - Anda harus menggunakan paket statistik atau matematika seperti Ratau Mathematica untuk pekerjaan semacam itu.)

  4. The error kuadrat diharapkan adalah rata-rata tertimbang ( y - xi ) ^ 2. Ini diminimalkan dengan mengambil y menjadi rata-rata tertimbang xi , sama dengan jumlah wi xi / w .

Anda mungkin senang dengan (1) atau (2) karena kesederhanaan dan interpretasi langsung mereka; Saya memasukkan (3) dan (4) untuk memberikan beberapa pilihan. Untuk menerapkan (1), Anda bisa mulai dengan memasukkan semua data dengan ukuran sel yang sangat kecil sehingga setiap bangunan menempati selnya sendiri. (Dengan luas sekitar 200 x 300 Km), ukuran sel, katakanlah, 5 m akan membutuhkan jaringan 40.000 hingga 60.000 sel yang sangat besar, tetapi hanya sekitar satu juta darinya yang akan ditempati, sehingga hanya membutuhkan sekitar 10 MB penyimpanan disk dalam format asli. Format Arc jika Anda berhati-hati untuk menyimpan nilai-nilai sebagai bilangan bulat.) Menggabungkan grid ini ke cellsize lebih besar menggunakanMedianpilihan. (Ukuran sel dari grid agregat kemungkinan akan sekitar 100m, memberikan grid seluruh negara 2000 dengan 3000 sel: cukup kecil untuk membuat prosedur yang dijelaskan di bawah ini tidak hanya praktis, tetapi lebih cepat untuk dijalankan.)

Anda juga harus mengumpulkan kisi-kisi indikator biner bangunan - yang meminta Sumwaktu ini - untuk menghitung jumlah bangunan per sel. Untuk sel agregat dengan jumlah kurang dari 5, ganggu median secara acak. Lakukan ini dengan Conoperasi. Pilihan yang efektif, walaupun sedikit rumit, untuk perturbasi adalah menambahkan noise yang terdistribusi normal ke logit nilai (diskalakan dari 0 ke 1 daripada 0 hingga 100): ini akan menjamin hasil yang masih berada antara 0 dan 100 Anda mungkin juga sedikit mengganggu semua sel sehingga tidak ada yang bisa membedakan sel yang terganggu dari sel yang tidak terganggu dengan memeriksa angka yang paling tidak signifikan.

Alur kerja untuk prosedur "gangguan logistik" ini, adalah sebagai berikut. Itu tergantung pada dua parameter: "sigma" adalah jumlah perturbasi sel yang membutuhkannya dan "epsilon" adalah jumlah minimal yang mengganggu semua sel. Keduanya adalah angka non-negatif. Percobaan pada subgrid kecil, dimulai dengan sigma = 0,15 dan epsilon = 0,01, dan variasikan parameter ini sampai hasilnya memuaskan. (Mengatur epsilon ke nol akan menghilangkan gangguan sama sekali untuk sel-sel tersebut.)

  1. Mulailah dengan kisi [Z] dengan nilai median (semua dalam rentang dari 0 hingga 100) dan kisi lain [N] yang menghitung jumlah bangunan di setiap sel, yang keduanya diproduksi oleh Aggregate.

  2. Buat kisi untuk jumlah perturbasi menggunakan Conperintah seperti

    Con["N" < 5, sigma, epsilon]
    
  3. Hasilkan perturbasi yang terdistribusi secara normal dengan mengambil kisi-kisi variabel normal unit (gunakan CreateNormalRaster dan mengalikannya dengan kisi sebelumnya. Panggil hasilnya "e", katakanlah.

  4. Hitung log nilai yang terganggu sebagai

    [Logit] = log("z" / (100 - "z")) + "e"
    
  5. Konversi kembali ke nilai dalam rentang 0..100:

    100 / (1 + exp(-"logit"))
    

Sebagai ilustrasi, berikut adalah beberapa Rkode untuk membuat kisi-kisi agregat sampel kecil, mengacaukannya, dan membandingkannya dengan nilai asli.

ncol <- 30; nrow <- 20
seed.random <- 17
x <- rpois(ncol * nrow, 5)
y <- floor(100 / (1 + exp(-(rnorm(ncol * nrow, mean = -2, sd = 1/sqrt(x))))))

sigma <- 0.15
epsilon <- 0.01

e <- rnorm(ncol*nrow, sd = ((x < 5)*sigma + (x >= 5)*epsilon))
logit <- log(y / (100 - y)) + e
y0 <- 100 / (1 + exp(-logit))

library(raster)
z <- matrix(y, ncol=ncol)
n <- matrix(x, ncol=ncol)
z0 <- matrix(y0, ncol=ncol)

par(mfrow=c(2,2))
n.r <- raster(n)
plot(n.r, main="Counts of residences [N]")

z.r <- raster(z)
plot(z.r, main="Median values [Z]")

z0.r <- raster(z0)
plot(z0.r, main="Perturbed median values")

plot(y, y0, type="n", xlab="Original medians", ylab="Perturbed medians",
     main="Perturbed vs. original medians")
points(y[x < 5], y0[x < 5], col="Red")
points(y[x >= 5], y0[x >= 5], pch=19)

Plot


Terima kasih banyak - lagi, jawaban yang sangat teliti. Benar - ini pendekatan lain untuk masalah dan pertanyaannya memang terkait dengan yang Anda sebutkan. Solusi terlihat bagus - akan mencobanya dengan dataset saya secepatnya!
radek
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.