Tôi đang cố gắng để hiểu những gì đang xảy ra với tính toán của tôi về khoảng cách canberra. Tôi viết hàm canberra.distance
đơn giản của riêng mình, tuy nhiên kết quả không nhất quán với hàm dist
. Tôi đã thêm tùy chọn na.rm = T
vào chức năng của mình, để có thể tính tổng khi không có mẫu số. Từ ?dist
Tôi hiểu rằng họ sử dụng phương pháp tương tự: Terms with zero numerator and denominator are omitted from the sum and treated as if the values were missing.
canberra khoảng cách - kết quả không phù hợp
canberra.distance <- function(a, b){
sum((abs(a - b))/(abs(a) + abs(b)), na.rm = T)
}
a <- c(0, 1, 0, 0, 1)
b <- c(1, 0, 1, 0, 1)
canberra.distance(a, b)
> 3
# the result that I expected
dist(rbind(a, b), method = "canberra")
> 3.75
a <- c(0, 1, 0, 0)
b <- c(1, 0, 1, 0)
canberra.distance(a, b)
> 3
# the result that I expected
dist(rbind(a, b), method = "canberra")
> 4
a <- c(0, 1, 0)
b <- c(1, 0, 1)
canberra.distance(a, b)
> 3
dist(rbind(a, b), method = "canberra")
> 3
# now the results are the same
cặp 0-0 và 1-1 dường như có vấn đề. Trong trường hợp đầu tiên (0-0) cả tử số và mẫu số bằng 0 và cặp này nên được bỏ qua. Trong trường hợp thứ hai (1-1) tử số là 0 nhưng mẫu số không và thuật ngữ sau đó cũng bằng 0 và tổng không nên thay đổi.
tôi thiếu gì ở đây?
EDIT: Để phù hợp với định nghĩa R, chức năng canberra.distance
thể được sửa đổi như sau:
canberra.distance <- function(a, b){
sum(abs(a - b)/abs(a + b), na.rm = T)
}
Tuy nhiên, kết quả đều giống nhau như trước đây.
Tôi nghĩ rằng bạn có thể đã tình cờ gặp lỗi trong cơ sở R. Tôi không chắc chắn, nhưng [Wolfram Alpha đồng ý với bạn] (https://www.wolframalpha.com/input/?i=CanberraDistance%5B% 7B1, + 0, + 1, + 0% 7D, +% 7B0, + 1, + 0, + 0% 7D% 5D). Rất tiếc, tôi không thể tìm thấy tài liệu tham khảo có thẩm quyền nhưng việc triển khai của bạn có vẻ đúng theo Wikipedia và Wolfram. –
Trên thực tế, [tài liệu về 'dist'] (https://stat.ethz.ch/R-manual/R-devel/library/stats/html/dist.html) xác định khoảng cách Canberra là * sum (| x_i - y_i |/| x_i + y_i |) * (khác với của bạn và của Wolfram). Nó cũng lưu ý rằng "[t] của anh ta dành cho các giá trị không âm (ví dụ: đếm): lấy giá trị tuyệt đối của mẫu số là sửa đổi R năm 1998 để tránh khoảng cách tiêu cực." - Định nghĩa của R được ghi nhận là khác nhau. –
@KonradRudolph Cảm ơn bạn đã trả lời! Tôi đã chỉnh sửa bài đăng của mình. Với định nghĩa R của sự không thống nhất khoảng cách giữa Canberra và tôi vẫn không nghĩ đây là vấn đề. – Adela