{"id":3119,"date":"2021-03-03T19:31:20","date_gmt":"2021-03-04T00:31:20","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/girni\/?p=3119"},"modified":"2021-03-03T21:51:17","modified_gmt":"2021-03-04T02:51:17","slug":"procesa-datos-un-punto-revisa-descriptores-estadisticos","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/girni\/procesa-datos-un-punto-revisa-descriptores-estadisticos\/","title":{"rendered":"3.6 Procesa Datos. Un punto - revisa descriptores estad\u00edsticos"},"content":{"rendered":"<p>El comportamiento de la se\u00f1al de cada baliza hacia un punto en particular se observa al calcular algunos valores de estad\u00edstica.<\/p>\n<p>El valor principal para el modelo de localizaci\u00f3n usado es el promedio de rssi de cada baliza en el punto.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2021\/03\/RssiUnPunto_pmf_FIEC102.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3120 aligncenter\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2021\/03\/RssiUnPunto_pmf_FIEC102.png\" alt=\"\" width=\"1089\" height=\"629\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2021\/03\/RssiUnPunto_pmf_FIEC102.png 1089w, https:\/\/blog.espol.edu.ec\/girni\/files\/2021\/03\/RssiUnPunto_pmf_FIEC102-300x173.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2021\/03\/RssiUnPunto_pmf_FIEC102-768x444.png 768w, https:\/\/blog.espol.edu.ec\/girni\/files\/2021\/03\/RssiUnPunto_pmf_FIEC102-1024x591.png 1024w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>Otro valor comprementario la <a href=\"https:\/\/es.wikipedia.org\/wiki\/Desviaci%C3%B3n_t%C3%ADpica\">desviaci\u00f3n est\u00e1ndar<\/a> (std, \u03c3) que es una medida de dispersi\u00f3n alrededor de la media. Estas variaciones estan asociadas a m\u00faltiples factores que depende de las caracter\u00edsticas del entorno.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full aligncenter\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/8\/8c\/Standard_deviation_diagram.svg\/450px-Standard_deviation_diagram.svg.png\" width=\"450\" height=\"225\" \/><\/p>\n<p>Si hay valores de promedios de un punto que son at\u00edpicos a la tendencia entre Rssi y la distancia se puede recurrir a \u00e9sta secci\u00f3n para observar el punto.<\/p>\n<p>Con el algoritmo se obtienen los siguientes valores para el punto del ejemplo:<\/p>\n<pre>baliza: d1 gtwRECT\r\nmuestras:  137 tramo:  17\r\n   count        mean       std    min    25%    50%    75%    max\r\n0  118.0 -128.211864  1.960515 -132.0 -130.0 -128.5 -127.0 -123.0\r\nbaliza: d2 gtwFIEC\r\nmuestras:  144 tramo:  15\r\n   count        mean       std    min    25%    50%    75%    max\r\n0  118.0 -128.211864  1.960515 -132.0 -130.0 -128.5 -127.0 -123.0\r\nbaliza: d3 gtwFCNM\r\nmuestras:  118 tramo:  9\r\n   count        mean       std    min    25%    50%    75%    max\r\n0  118.0 -128.211864  1.960515 -132.0 -130.0 -128.5 -127.0 -123.0\r\n<\/pre>\n<h2>Datos de ingreso<\/h2>\n<p>El primer valor que se requiere es el nombre del punto, ejemplo 'FIEC102', luego el modo de lectura (rx,tx') y la medida (rssi, snr).<\/p>\n<p>Los datos se toman del archivo que integra en una tbala los datos del punto, en formato json del proceso anterior.<\/p>\n<p>Se usa el diccionario que identifica a las balizas para realizar la tabulaci\u00f3n de los descriptores.<\/p>\n<pre><span style=\"color: #ff0000\"># INGRESO<\/span>\r\ncadapunto  = <span style=\"color: #008000\">'FIEC102'<\/span>\r\nmodo       = <span style=\"color: #008000\">'rx'<\/span>\r\nmedida     = <span style=\"color: #008000\">'rssi'<\/span>\r\ndescriptor = <span style=\"color: #008000\">'mean'<\/span>\r\n\r\n<span style=\"color: #ff0000\"># Archivos de datos<\/span>\r\narch_detalles = <span style=\"color: #008000\">'rsmP02_tabla_puntosdatos01.json'<\/span>\r\n\r\n<span style=\"color: #ff0000\"># Referencias<\/span>\r\nbaliza  = {<span style=\"color: #008000\">'d1'<\/span>:<span style=\"color: #008000\">'gtwRECT'<\/span>,\r\n           <span style=\"color: #008000\">'d2'<\/span>:<span style=\"color: #008000\">'gtwFIEC'<\/span>,\r\n           <span style=\"color: #008000\">'d3'<\/span>:<span style=\"color: #008000\">'gtwFCNM'<\/span>}\r\ntolera = 1e-8\r\n<\/pre>\n<p>Los resultados se complementan con la gr\u00e1fica que muestra la distribuci\u00f3n de probabilidad para cada baliza, marcando tambi\u00e9n el valor de promedio y la suma de promedio mas desvici\u00f3n est\u00e1ndar.<\/p>\n<p>El an\u00e1lisis del comportamiento de la se\u00f1al de cada punto tiene relaci\u00f3n con el entorno del punto dominado por edificios o vegetaci\u00f3n.<\/p>\n<hr \/>\n<h2>Algoritmo en Python<\/h2>\n<pre><span style=\"color: #ff0000\"># Revisar un punto, descriptores estad\u00edsticos<\/span>\r\n<span style=\"color: #ff0000\"># requiere un punto, modo, medida<\/span>\r\n<span style=\"color: #ff0000\"># nombre del archivo de la tabla detalle<\/span>\r\n<span style=\"color: #ff0000\"># Girni 2020-10-07 edelros@espol.edu.ec<\/span>\r\n<span style=\"color: #d35400\">import<\/span> numpy <span style=\"color: #d35400\">as<\/span> np\r\n<span style=\"color: #d35400\">import<\/span> pandas <span style=\"color: #d35400\">as<\/span> pd\r\n<span style=\"color: #d35400\">import<\/span> json\r\n<span style=\"color: #d35400\">import<\/span> matplotlib.pyplot <span style=\"color: #d35400\">as<\/span> plt\r\n\r\n<span style=\"color: #ff0000\"># INGRESO<\/span>\r\ncadapunto  = <span style=\"color: #008000\">'FIEC102'<\/span>\r\nmodo       = <span style=\"color: #008000\">'rx'<\/span>\r\nmedida     = <span style=\"color: #008000\">'rssi'<\/span>\r\ndescriptor = <span style=\"color: #008000\">'mean'<\/span>\r\n\r\n<span style=\"color: #ff0000\"># Archivos de datos<\/span>\r\narch_detalles = <span style=\"color: #008000\">'rsmP02_tabla_puntosdatos01.json'<\/span>\r\n\r\n<span style=\"color: #ff0000\"># Referencias<\/span>\r\nbaliza  = {<span style=\"color: #008000\">'d1'<\/span>:<span style=\"color: #008000\">'gtwRECT'<\/span>,\r\n           <span style=\"color: #008000\">'d2'<\/span>:<span style=\"color: #008000\">'gtwFIEC'<\/span>,\r\n           <span style=\"color: #008000\">'d3'<\/span>:<span style=\"color: #008000\">'gtwFCNM'<\/span>}\r\ntolera = 1e-8\r\n\r\n<span style=\"color: #ff0000\"># PROCEDIMIENTO <\/span>\r\nbaliza_key = <span style=\"color: #ff00ff\">list<\/span>(baliza.keys())\r\nbaliza_val = <span style=\"color: #ff00ff\">list<\/span>(baliza.values())\r\n\r\n<span style=\"color: #ff0000\"># leer datos<\/span>\r\n<span style=\"color: #d35400\">with<\/span> <span style=\"color: #ff00ff\">open<\/span>(arch_detalles) <span style=\"color: #d35400\">as<\/span> json_file: \r\n    puntodato = json.load(json_file)\r\n\r\npunto = {}\r\n<span style=\"color: #d35400\">for<\/span> cadabaliza <span style=\"color: #d35400\">in<\/span> baliza:\r\n    punto[cadabaliza] = {}\r\n    \r\n    <span style=\"color: #ff0000\"># revisa un punto<\/span>\r\n    unpunto = puntodato[modo][cadapunto][cadabaliza][medida+<span style=\"color: #008000\">'_'<\/span>+modo]\r\n    unpunto = np.array(unpunto)\r\n    ordenar = np.argsort(unpunto)\r\n    unpunto = unpunto[ordenar]\r\n\r\n    puntopd  = pd.DataFrame(unpunto)\r\n    describe = puntopd.describe()\r\n    describe = describe.T\r\n\r\n    pmin = describe[<span style=\"color: #008000\">'min'<\/span>][0]\r\n    pmax = describe[<span style=\"color: #008000\">'max'<\/span>][0]\r\n    tramo  = <span style=\"color: #ff00ff\">int<\/span>(pmax-pmin)\r\n    conteo = np.zeros(tramo+1,dtype=<span style=\"color: #ff00ff\">int<\/span>)\r\n    posicion = np.arange(pmin,pmax+1,1)\r\n    posicion = <span style=\"color: #ff00ff\">list<\/span>(posicion)\r\n    conteo = <span style=\"color: #ff00ff\">list<\/span>(conteo)\r\n    <span style=\"color: #d35400\">for<\/span> valor <span style=\"color: #d35400\">in<\/span> unpunto:\r\n        donde = posicion.index(valor)\r\n        conteo[donde] = conteo[donde] + 1\r\n    punto[cadabaliza] = {<span style=\"color: #008000\">'muestras'<\/span>: <span style=\"color: #ff00ff\">len<\/span>(unpunto),\r\n                         <span style=\"color: #008000\">'tramo'<\/span>:    tramo,\r\n                         <span style=\"color: #008000\">'posicion'<\/span>: posicion.copy(),\r\n                         <span style=\"color: #008000\">'conteo'<\/span>:   conteo.copy(),\r\n                         <span style=\"color: #008000\">'describe'<\/span>: describe}\r\n\r\n<span style=\"color: #ff0000\"># SALIDA<\/span>\r\n<span style=\"color: #d35400\">for<\/span> cadabaliza <span style=\"color: #d35400\">in<\/span> baliza:\r\n    <span style=\"color: #ff00ff\">print<\/span>(<span style=\"color: #008000\">'baliza:'<\/span>, cadabaliza, baliza[cadabaliza])\r\n    <span style=\"color: #ff00ff\">print<\/span>(<span style=\"color: #008000\">'muestras: '<\/span>, punto[cadabaliza][<span style=\"color: #008000\">'muestras'<\/span>],\r\n          <span style=\"color: #008000\">'tramo: '<\/span>   , punto[cadabaliza][<span style=\"color: #008000\">'tramo'<\/span>])\r\n    <span style=\"color: #ff00ff\">print<\/span>(describe)\r\n\r\n<span style=\"color: #ff0000\"># grafica<\/span>\r\nprecision = 2\r\nfigura,grafica = plt.subplots()\r\nn_baliza = <span style=\"color: #ff00ff\">len<\/span>(baliza)\r\n<span style=\"color: #d35400\">for<\/span> cadabaliza <span style=\"color: #d35400\">in<\/span> baliza:\r\n    p_media  = np.round(punto[cadabaliza][<span style=\"color: #008000\">'describe'<\/span>][<span style=\"color: #008000\">'mean'<\/span>][0],precision)\r\n    p_std    = np.round(punto[cadabaliza][<span style=\"color: #008000\">'describe'<\/span>][<span style=\"color: #008000\">'std'<\/span>][0],precision)\r\n    muestras = punto[cadabaliza][<span style=\"color: #008000\">'muestras'<\/span>]\r\n    posicion = punto[cadabaliza][<span style=\"color: #008000\">'posicion'<\/span>]\r\n    conteo   = np.array(punto[cadabaliza][<span style=\"color: #008000\">'conteo'<\/span>])\/muestras\r\n    conteomax = np.max(conteo)\r\n    <span style=\"color: #ff0000\">#grafica.plot(posicion,conteo,'o',label = cadabaliza)<\/span>\r\n    grafica.plot(posicion,conteo,<span style=\"color: #008000\">'-'<\/span>,label = cadabaliza)\r\n    grafica.axvline(p_media,\r\n                color = <span style=\"color: #008000\">'green'<\/span>, linestyle = <span style=\"color: #008000\">'dashed'<\/span>)\r\n    texto = cadabaliza + <span style=\"color: #008000\">': '<\/span> + <span style=\"color: #ff00ff\">str<\/span>(p_media)\r\n    grafica.annotate(cadabaliza+<span style=\"color: #008000\">': '<\/span>+<span style=\"color: #ff00ff\">str<\/span>(p_media),(p_media,conteomax),\r\n                 color=<span style=\"color: #008000\">'green'<\/span>)\r\n    grafica.axvline(p_media+ p_std,\r\n                color =<span style=\"color: #008000\">'orange'<\/span>, linestyle = <span style=\"color: #008000\">'dotted'<\/span>)\r\n    texto = texto + <span style=\"color: #008000\">'+'<\/span> + <span style=\"color: #ff00ff\">str<\/span>(p_std)\r\n    grafica.annotate(texto,(p_media+p_std,conteomax-0.015),\r\n                 color=<span style=\"color: #008000\">'orange'<\/span>)\r\n    grafica.axvline(p_media- p_std,\r\n                color =<span style=\"color: #008000\">'orange'<\/span>, linestyle = <span style=\"color: #008000\">'dotted'<\/span>)\r\n    grafica.axvline(p_media+ 2*p_std,\r\n                color =<span style=\"color: #008000\">'yellow'<\/span>, linestyle = <span style=\"color: #008000\">'dotted'<\/span>)\r\n    grafica.axvline(p_media- 2*p_std,\r\n                color =<span style=\"color: #008000\">'yellow'<\/span>, linestyle = <span style=\"color: #008000\">'dotted'<\/span>)\r\ngrafica.set_xlabel(<span style=\"color: #008000\">'rssi'<\/span>)\r\ngrafica.set_ylabel(<span style=\"color: #008000\">'pmf'<\/span>)\r\ntexto = <span style=\"color: #008000\">'Distribuci\u00f3n de probabilidad: '<\/span>+cadapunto+<span style=\"color: #008000\">' '<\/span>+medida\r\ngrafica.set_title(texto)\r\ngrafica.grid(<span style=\"color: #d35400\">True<\/span>,linestyle=<span style=\"color: #008000\">'dotted'<\/span>,\r\n             axis=<span style=\"color: #008000\">'y'<\/span>, which=<span style=\"color: #008000\">'both'<\/span>)\r\ngrafica.legend()\r\nplt.show()\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>El comportamiento de la se\u00f1al de cada baliza hacia un punto en particular se observa al calcular algunos valores de estad\u00edstica. El valor principal para el modelo de localizaci\u00f3n usado es el promedio de rssi de cada baliza en el punto. Otro valor comprementario la desviaci\u00f3n est\u00e1ndar (std, \u03c3) que es una medida de dispersi\u00f3n &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/blog.espol.edu.ec\/girni\/procesa-datos-un-punto-revisa-descriptores-estadisticos\/\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \"3.6 Procesa Datos. Un punto - revisa descriptores estad\u00edsticos\"<\/span><\/a><\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1463489],"tags":[],"class_list":["post-3119","post","type-post","status-publish","format-standard","hentry","category-localizacion-rssi-lora"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/3119","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/comments?post=3119"}],"version-history":[{"count":4,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/3119\/revisions"}],"predecessor-version":[{"id":3125,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/3119\/revisions\/3125"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/media?parent=3119"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/categories?post=3119"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/tags?post=3119"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}