2011-12-14 11 views
5

मैं स्थानीयकरण प्रोजेक्ट पर काम कर रहा हूं और ट्रांसमीटर के स्थान को निर्धारित करने के लिए कम से कम वर्ग अनुमान का उपयोग कर रहा हूं। मुझे अपने कार्यक्रम के भीतर अपने समाधान की "फिटनेस" को सांख्यिकीय रूप से चिह्नित करने का एक तरीका चाहिए, जिसका उपयोग मुझे यह बताने के लिए किया जा सकता है कि मेरे पास कोई अच्छा जवाब है, या मुझे अतिरिक्त माप की आवश्यकता है, या खराब डेटा है। मैंने "निर्धारित गुणांक" या आर-स्क्वायर का उपयोग करने के बारे में कुछ पढ़ा है, लेकिन कोई अच्छा उदाहरण नहीं ढूंढ पाया है। इस बात पर कोई विचार है कि मेरे पास कोई अच्छा समाधान है या नहीं, या अतिरिक्त माप की आवश्यकता है, इसकी सराहना की जाएगी।कम वर्ग अनुमानों की फिटनेस का वर्णन कैसे करें

धन्यवाद!

मेरे कोड मेरा पीछा आउटपुट देता है,

grid_lat और grid_lon अक्षांश के अनुरूप और देशांतर संभव लक्ष्य स्थानों की ग्रिड

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 के लिए निर्देशांक कैसे एक समाधान प्रत्येक की "अच्छा" से मेल खाती है मुद्दा यह है। अगर हमारे पास 0.0 की त्रुटि है, तो हमारे पास एक आदर्श समाधान है। प्रत्येक माप स्थिति (नीचे माप में ट्रैक) के लिए ग्रिड पर प्रत्येक बिंदु के लिए ग्रिड त्रुटि की गणना की जाती है। प्रत्येक माप की स्थिति ट्रांसमीटर के लिए अनुमानित सीमा है। "त्रुटि" माप से ट्रांसमीटर तक अनुमानित सीमा से मेल खाती है, माप सीमा स्थान और ग्रिड बिंदु के बीच गणना की गई वास्तविक सीमा को घटाती है। कम त्रुटि, अधिक से अधिक मौका हम वास्तविक ट्रांसमीटर स्थान

# 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) 

यहाँ के करीब हैं एक बहुत बड़ा ग्रिड पर एल्गोरिथ्म प्रसंस्करण का एक उदाहरण छवि है। मैं दृढ़ता से बता सकता हूं कि मेरे पास एक बहुत अच्छा समाधान है क्योंकि आकार एक न्यूनतम बिंदु (समाधान) पर आसानी से परिवर्तित होता है, जो एक उलटा चुड़ैल टोपी की तरह दिखता है। enter image description here

दूसरी छवि शीर्ष पर प्लॉट किए गए समाधान के साथ सभी माप और स्थानों को दिखाती है, और समाधान (लाल एक्स) के रूप में न्यूनतम बिंदु।

enter image description here

+0

चिंता, वास्तव में चिंता क्या है? ऐसा लगता है कि आप 'grid_error' के माध्यम से अपने प्रश्न का उत्तर देते हैं। आपके विवरण और भूखंड बहुत अच्छे हैं, लेकिन हम नहीं जानते कि आपका प्रोग्राम क्या है और यह कैसे काम करता है। हम केवल इनपुट और उनके आउटपुट देखते हैं। –

+0

स्टीव- मैं दृढ़ता से बता सकता हूं कि मेरे पास एक अच्छा जवाब है, आप लाल एक्स से दूर जाने वाले स्वच्छ आत्मविश्वास अंतराल देखते हैं, जो सीधे बढ़ते औसत वर्ग त्रुटि से संबंधित होते हैं क्योंकि हम लक्ष्य बिंदु से दूर दूर जाते हैं। चुनौती का सामना करना यह है कि यह निर्धारित करने के लिए कि मेरे पास एक अच्छा समाधान है या मानव अवलोकन की आवश्यकता के बिना प्रोग्रामेटिक रूप से नहीं है – Alex

+0

त्रुटि अनुमान उत्पन्न होता है यह दिखाने के लिए कुछ कोड (केवल ग्रिड_error परिभाषा के ऊपर) जोड़ा गया है – Alex

उत्तर

3

करीब R-squared 1.0 करने के लिए है, बेहतर अपने फिट है। अपनी खुद की "अच्छी पर्याप्त" दहलीज चुनें, मुझे लगता है कि सामान्य थ्रेसहोल्ड .92 -98 श्रेणी में हैं।

+0

पॉल- मैं सक्षम नहीं हूं आर-स्क्वायर मेरे डेटा से कैसे संबंधित है इसका एक अच्छा स्पष्टीकरण पाएं। उदाहरण के लिए, मुझे इस कार्यक्रम को विकसित करने के अनुभव के माध्यम से पता है कि एक अच्छे समाधान में एक साफ उलटा हुआ चुड़ैल टोपी आकार होगा, जिसमें आसपास के ग्रिड बिंदुओं पर त्रुटि मान एक रैखिक तरीके से बढ़ते हैं क्योंकि आप समाधान से आगे बढ़ते हैं। मुझे यकीन नहीं है कि आर-स्क्वायर वैल्यू इस बारे में बताता है, और आर-स्क्वायर के लिए उपयोग करने के लिए एक अच्छा फोरमला भी ऊपर दिए गए टेस्ट डेटा को दिया गया है। धन्यवाद! – Alex

+0

आपकी पोस्ट में, आपने पहले ही कहा है कि आप कम से कम वर्ग अनुमान कर रहे हैं - यह पृष्ठ देखें (http://mathworld.wolfram.com/CorrelationCoefficient.html), समीकरण 22 भिन्न घटकों का उपयोग करके आर-स्क्वायर की गणना करने के लिए एक अभिव्यक्ति देता है कम से कम वर्ग गणना के दौरान गणना की जा सकती है।यह पृष्ठ कुछ उदाहरण दिखाता है कि विभिन्न डेटा सेट और आर-स्क्वायर के संबंधित मानों के साथ फिट बैठता है। – PaulMcG

संबंधित मुद्दे