2011-12-14 27 views
5

Tôi đang làm việc trên một dự án bản địa hóa và sử dụng ước lượng bình phương tối thiểu để xác định vị trí của bộ phát. Tôi cần một cách để thống kê đặc điểm "thể lực" của giải pháp trong chương trình của tôi, có thể được sử dụng để cho tôi biết nếu tôi có câu trả lời hay, hoặc tôi cần các phép đo bổ sung hoặc có dữ liệu xấu. Tôi đã đọc một chút về việc sử dụng "Hệ số xác định" hoặc R bình phương, nhưng không thể tìm thấy bất kỳ ví dụ hay nào. Bất kỳ ý tưởng về làm thế nào để mô tả cho dù tôi có một giải pháp tốt, hoặc cần các phép đo bổ sung sẽ được nhiều đánh giá cao.Cách mô tả tính thể dục của Ước lượng tối thiểu của hình vuông

Cảm ơn!

Mã của tôi mang lại cho tôi những kết quả đầu ra sau,

grid_lat và grid_lon tương ứng với vĩ độ và kinh độ cho mạng lưới các vị trí mục tiêu có thể

grid_lat = [[ 38.16755799 38.16755799 38.16755799 38.16755799 38.16755799 
    38.16755799] 
    [ 38.17717199 38.17717199 38.17717199 38.17717199 38.17717199 
    38.17717199] 
    [ 38.186786 38.186786 38.186786 38.186786 38.186786 38.186786 ] 
    [ 38.1964  38.1964  38.1964  38.1964  38.1964  38.1964 ] 
    [ 38.20601401 38.20601401 38.20601401 38.20601401 38.20601401 
    38.20601401] 
    [ 38.21562801 38.21562801 38.21562801 38.21562801 38.21562801 
    38.21562801] 
    [ 38.22524202 38.22524202 38.22524202 38.22524202 38.22524202 
    38.22524202]] 

grid_lon = [[-75.83805812 -75.83006167 -75.82206522 -75.81406878 -75.80607233 
    -75.79807588] 
    [-75.83805812 -75.83006167 -75.82206522 -75.81406878 -75.80607233 
    -75.79807588] 
    [-75.83805812 -75.83006167 -75.82206522 -75.81406878 -75.80607233 
    -75.79807588] 
    [-75.83805812 -75.83006167 -75.82206522 -75.81406878 -75.80607233 
    -75.79807588] 
    [-75.83805812 -75.83006167 -75.82206522 -75.81406878 -75.80607233 
    -75.79807588] 
    [-75.83805812 -75.83006167 -75.82206522 -75.81406878 -75.80607233 
    -75.79807588] 
    [-75.83805812 -75.83006167 -75.82206522 -75.81406878 -75.80607233 
    -75.79807588]] 

grid_error tương ứng với cách "tốt" của một giải pháp từng Vấn đề là. Nếu chúng ta có lỗi 0.0, chúng ta có một giải pháp hoàn hảo. Lỗi lưới được tính cho mỗi điểm trên lưới tới từng vị trí đo (các đường trong phép đo dưới đây). Mỗi vị trí đo có một phạm vi ước tính cho máy phát. "Lỗi" tương ứng với phạm vi ước tính để phát từ phép đo, trừ đi phạm vi thực tế được tính toán giữa vị trí phạm vi đo và điểm lưới. Lỗi càng thấp, cơ hội chúng tôi càng gần vị trí máy phát thực tế càng lớn,

# Calculate distance between every grid point and every measurement in meters 
measured_distance = spatial.distance.cdist(grid_ecef_array, measurement_ecef_array, 'euclidean') 

measurement_error = [pow((measurement - estimated_distance),2) for measurement in measured_distance] 

mean_squared_error = [numpy.sqrt(numpy.mean(measurement)) for measurement in measurement_error] 

# Find minimum solution 
# Convert array of mean_squared_errors to 2D grid for graphing 
N3, N4 = numpy.array(grid_lon).shape 
grid_error = numpy.array(mean_squared_error).reshape((N3, N4)) 

grid_error = [[ 2.33608445 2.02805063 1.85638288 1.84620283 2.02757163 2.38035108] 
    [ 1.73675429 1.40649524 1.21799211 1.06503271 1.27373554 1.74265406] 
    [ 1.44967789 0.96835022 0.62667257 0.52804942 0.91189678 1.50067864] 
    [ 1.70155286 1.24024402 0.9642869 1.00517531 1.32606411 1.81754752] 
    [ 2.40218247 2.07449106 1.91044903 1.94272889 2.15511638 2.51683715] 
    [ 3.29679348 3.05353929 2.93662134 2.95839307 3.11583615 3.39320682] 
    [ 4.27303679 4.08195869 3.99203754 4.00926823 4.13247105 4.35378011]] 

# Generate the 3D plot with the Z coordinate being the mean squared error estimate 
plot3Dcoordinates(grid_lon, grid_lat, grid_error) 

# Generic function using matplotlib to plot coordinates 
def plot3Dcoordinates(X, Y, Z): 
    fig = plt.figure() 
    ax = Axes3D(fig) 

    surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet, 
      linewidth=0, antialiased=False) 

    fig.colorbar(surf, shrink=0.5, aspect=5) 

Dưới đây là ví dụ về xử lý thuật toán trên một mạng lớn hơn nhiều. Tôi có thể nói một cách trực quan rằng tôi có một giải pháp khá tốt vì hình dạng hội tụ trên một điểm tối thiểu (giải pháp) trơn tru, trông giống như một chiếc mũ phù thủy ngược. enter image description here

Hình ảnh thứ hai hiển thị tất cả các phép đo và vị trí có giải pháp được vẽ trên đầu và điểm minumum làm giải pháp (x đỏ).

enter image description here

+0

Chính xác, mối quan tâm là gì? Có vẻ như bạn trả lời câu hỏi của riêng bạn thông qua 'grid_error'. Chi tiết và lô đất của bạn rất tuyệt, nhưng chúng tôi không biết chương trình của bạn là gì và nó hoạt động như thế nào. Chúng tôi chỉ thấy đầu vào và đầu ra của họ. –

+0

Steve-tôi có thể nói trực quan rằng tôi có câu trả lời hay, bạn thấy các khoảng tin cậy sạch sẽ rời khỏi X màu đỏ, liên quan trực tiếp đến sai số bình phương gia tăng khi chúng ta di chuyển xa điểm mục tiêu. Thách thức tôi đang phải đối mặt là làm thế nào để xác định rằng tôi có một giải pháp tốt hoặc không có lập trình mà không yêu cầu quan sát con người – Alex

+0

Nhập một số mã (chỉ trên định nghĩa grid_error) để hiển thị cách ước tính lỗi được tạo ra – Alex

Trả lời

3

Gần hơn R-bình phương là 1,0, thì bạn càng phù hợp. Chọn ngưỡng "đủ tốt" của riêng bạn, tôi nghĩ ngưỡng điển hình nằm trong khoảng .92 -98.

+0

Paul- Tôi đã không thể tìm một giải thích tốt về cách R-squared liên quan đến dữ liệu của tôi. Ví dụ, tôi biết thông qua kinh nghiệm phát triển chương trình này rằng một giải pháp tốt sẽ có một hình dạng mũ phù thủy đảo ngược sạch sẽ, với các giá trị lỗi trên các điểm lưới xung quanh tăng theo cách tuyến tính khi bạn di chuyển xa khỏi dung dịch. Tôi chỉ không chắc chắn giá trị bình phương R giải thích điều này như thế nào, và cũng là một forumla tốt để sử dụng cho R-squared cho dữ liệu thử nghiệm ở trên. Cảm ơn! – Alex

+0

Trong bài viết của bạn, bạn đã nói rằng bạn đang ước tính bình phương tối thiểu - xem trang này (http://mathworld.wolfram.com/CorrelationCoefficient.html), phương trình 22 đưa ra một biểu thức để tính toán bình phương R, sử dụng các thành phần khác nhau có thể được tính toán trong các phép tính bình phương nhỏ nhất.Trang này cũng cho thấy một số ví dụ phù hợp với các tập dữ liệu khác nhau và các giá trị tương ứng của R bình phương. – PaulMcG

Các vấn đề liên quan