jueves, 13 de diciembre de 2007

PROGRAMAR ENCUESTAS FIABLES

Hacer una encuesta en una página web o por e-mail es algo bastante simple (los que no sean programadores, que no entiendan por simple... algo rápido en 5 minutos). Pero el problema no es tanto en recoger los datos como el interpretar los resultados.

Para mí, una encuesta debe dar una información lo más real y fiable posible. Por ello, siempre se intenta evitar que ciertos visitantes con ánimo de balancear la encuesta hacia un resultado que a ellos le interesa especialmente no consigan su objetivo.

Variadas son las técnicas que se utilizan, desde el control de las votaciones dejando una cookie en el navegador del visitante hasta el filtro por ip. (Hablamos claramente de encuestas públicas y no de usuarios autentificados, si no está claro que un usuario, un voto).


Tanto si es por ip, cookie o una combinación, muchos toman como dato a tener en cuenta el primer o último voto desde esa ip o navegador con cookie.


El tema de la cookie es fácil evitarlo, simplemente hay que borrarlas del navegador antes de cada votación o decirle al navegador que no permita cookies. Por ello, yo me decanto más por el filtro por ip.

Pero por contra, a mi me interesan todos los resultados obtenidos, por lo que yo prefiero almacenar todos los datos, almacenando, por supuesto, la ip en cada votación.

A la hora de interpretar los resultados, haré lo siguiente, y tomando como ejemplo una única pregunta de encuesta (si la encuesta tiene varias preguntas, las trataré como encuestas diferentes):

Acumularé, por un lado, la media de las votaciones de cada ip. Es decir, haré una media de votaciones por cada ip.

De esta forma, por cada ip obtendré una voto. En el caso que alguien intente balancear la votación hacia un lado votando repetidamente el mismo valor, la media me dará el valor real de esa ip, y en el caso de que esa ip corresponda a una empresa y varia gente haya dado su opinión (aquí si pierdo algo de información... inevitable) obtendré finalmente un voto que será la media de los mismos.

Luego, con las ips acumuladas con sus medias de votos, haré la media que tomaré como dato determinante.


Como ejemplo...
----------------------------------------------------------------------------------
select id_pregunta,AVG(totalpuntos) as puntuacion, count(ip) as votos
from (
select id_pregunta,avg(puntos) as totalpuntos,ip
from gen_encuestas
where id_encuesta='identificador'
group by id_pregunta,ip
)
group by id_pregunta
----------------------------------------------------------------------------------

No hay comentarios: