Foros del Web » Programando para Internet » PHP »

PHP OO Como calcular media de una respuesta

Estas en el tema de Como calcular media de una respuesta en el foro de PHP en Foros del Web. Hola chicos, tengo duda como calculo medio de respuesta de una pregunta. Por ejemplo para siguente datos de una pregunta que tienne 10 opciones de ...
  #1 (permalink)  
Antiguo 15/06/2013, 04:13
 
Fecha de Ingreso: junio-2008
Mensajes: 42
Antigüedad: 15 años, 10 meses
Puntos: 3
Pregunta Como calcular media de una respuesta

Hola chicos, tengo duda como calculo medio de respuesta de una pregunta.
Por ejemplo para siguente datos de una pregunta que tienne 10 opciones de respuesta y primera opcion es 0 (no se puede cambiar)

Este es un array que contiene como keys opciones de respuesta y los porcentages de cada respuesta ya calculados.

Código PHP:
$data = array(
    
0=> 2.75,
    
=> 0,
    
2=> 0,
    
=> 1.8,
    
=> 0.9,
    
=> 14.68,
    
=> 12.84,
    
7=> 16.51,
    
8=> 26.61,
    
=> 11.93,
    
10=> 11.93);

la media la calculo de siguente modo 
$tmp 
= array();
foreach(
$data as $k=>$v){
    
$tmp[] = $k $v;
}
$tmp1array_sum(array_values($data));

$media round(array_sum($tmp)/$tmp12); 
La media me da 7.15

Que es creible, pero la primera opcion es 0*2.75 siempre devovlera 0, sea lo que sea alli, con lo que entiendo que pierdo calculo de respuestas de primera opcion?

Como lo hago?
Muchas gracias a todos por adelantado.
  #2 (permalink)  
Antiguo 15/06/2013, 04:39
Avatar de dvpareja  
Fecha de Ingreso: junio-2010
Ubicación: Vélez-Málaga
Mensajes: 126
Antigüedad: 13 años, 11 meses
Puntos: 11
Respuesta: Como calcular media de una respuesta

Buenas,

lo que tienes aquí es un problema de matemáticas.

La media aritmética se calcula como la suma de todos los valores dividido entre el número de valores

M = Sum(valores)/num

Tu estás multiplicando la posición del valor por su valor y dividiéndolo entre 2.

Por otro lado, ¿para que defines un array de esa manera si las keys son números del 0 al n.?

Sería más rápido que los hubieras definido como

$data=array(2.75,0,0,1.8....);

o si usas PHP 5.4

$data = [2.75,0,0,1.8....];

Por tanto, tu script para calcular la media sería:

Código PHP:
Ver original
  1. $data = array(2.75,0,0,1.8,0.9,14.68,12.87,16.51,26.61,11.93,11.93);
  2. $sum = 0;
  3. foreach ($data as $nota) {
  4.     $sum += $nota;
  5. }
  6.  
  7. //o directamente $sum = array_sum($data);
  8.  
  9. $media = $sum/count($data);
  #3 (permalink)  
Antiguo 15/06/2013, 04:44
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Respuesta: Como calcular media de una respuesta

Lo que hace @vkapyrina en matematicas se llama Media Ponderada
__________________
Salu2!
  #4 (permalink)  
Antiguo 15/06/2013, 04:52
Avatar de dvpareja  
Fecha de Ingreso: junio-2010
Ubicación: Vélez-Málaga
Mensajes: 126
Antigüedad: 13 años, 11 meses
Puntos: 11
Respuesta: Como calcular media de una respuesta

Cita:
Iniciado por Italico76 Ver Mensaje
Lo que hace @vkapyrina en matematicas se llama Media Ponderada
Para calcular la media ponderada que sería peso de las respuestas por su valor dividido entre la suma de los pesos, el array debería contener los pesos, y dudo que el peso de alguna sea 0

P.D. : En el post anterior leí mal. No está dividiendo entre 2
  #5 (permalink)  
Antiguo 15/06/2013, 05:13
 
Fecha de Ingreso: junio-2008
Mensajes: 42
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Como calcular media de una respuesta

Hola chicos, gracias por las respuestas!
El tema es que los datos me vienen asi tal cual, (los recibo lllamando a un ws) yo necesito saber la media de respuesta (que seria media entre los keys del array, no values).
O sea entre 0 y 10 que son opciones de la respuesta posibles la media ha sido 4
por ejemplo.

Por ejemplo preguntas tipo

En una escala de 0 a 10, donde 0 significa "nada de acuerdo" y 10 "totalmente de acuerdo", por favor, indica tu grado de acuerdo con las siguientes afirmaciones...
Recojo estas respuestas

$data = array(
0=> 2.75%,
1 => 0%,
2=> 0%,
3 => 1.8%,
4 => 0.9%,
5 => 14.68%,
6 => 12.84%,
7=> 16.51%,
8=> 26.61%,
9 => 11.93%,
10=> 11.93%);

Como saco media aqui...
Gracias a todos!

Última edición por vkapyrina; 15/06/2013 a las 05:20
  #6 (permalink)  
Antiguo 15/06/2013, 05:41
Avatar de dvpareja  
Fecha de Ingreso: junio-2010
Ubicación: Vélez-Málaga
Mensajes: 126
Antigüedad: 13 años, 11 meses
Puntos: 11
Respuesta: Como calcular media de una respuesta

Pues efectivamente tienes una media ponderada, donde el porcentaje es el peso.

Código PHP:
Ver original
  1. $data = array(
  2.     0=> 2.75,
  3.     1 => 0,
  4.     2=> 0,
  5.     3 => 1.8,
  6.     4 => 0.9,
  7.     5 => 14.68,
  8.     6 => 12.84,
  9.     7=> 16.51,
  10.     8=> 26.61,
  11.     9 => 11.93,
  12.     10=> 11.93);
  13.  
  14. $tmp = array();
  15. foreach($data as $k=>$v){
  16.     $tmp[] = $k * $v;
  17. }
  18.  
  19. $media = round(array_sum($tmp)/array_sum(array_values($data)), 2);
  #7 (permalink)  
Antiguo 15/06/2013, 06:13
 
Fecha de Ingreso: junio-2008
Mensajes: 42
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Como calcular media de una respuesta

O sea, lo hago bien entiendo.
Me preocupaba este primer 0, porque multiplicar siempre devolvera 0 tenga porcentaje que tenga como valor.
Gracias!
  #8 (permalink)  
Antiguo 15/06/2013, 06:47
Avatar de dvpareja  
Fecha de Ingreso: junio-2010
Ubicación: Vélez-Málaga
Mensajes: 126
Antigüedad: 13 años, 11 meses
Puntos: 11
Respuesta: Como calcular media de una respuesta

Cita:
Iniciado por vkapyrina Ver Mensaje
O sea, lo hago bien entiendo.
Me preocupaba este primer 0, porque multiplicar siempre devolvera 0 tenga porcentaje que tenga como valor.
Gracias!
Claro, la valoración 0 tiene un peso de 2.75, es en la suma de los pesos (en el divisor) donde ese porcentaje va a tomar la relevancia, en el numerador, como bien dices, el producto siempre será cero.
  #9 (permalink)  
Antiguo 15/06/2013, 09:25
 
Fecha de Ingreso: junio-2008
Mensajes: 42
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Como calcular media de una respuesta

Muchissimas gracias a todos
  #10 (permalink)  
Antiguo 15/06/2013, 15:26
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Respuesta: Como calcular media de una respuesta

Cita:
Iniciado por Italico76 Ver Mensaje
Lo que hace @vkapyrina en matematicas se llama Media Ponderada
Verdad,... los arrays comienzan en 0...

Sino se podria haber considerado que los pesos eran dados por el valor del indice
__________________
Salu2!
  #11 (permalink)  
Antiguo 15/06/2013, 15:43
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 1 mes
Puntos: 270
Respuesta: Como calcular media de una respuesta

Cita:
Iniciado por vkapyrina Ver Mensaje
Que es creible, pero la primera opcion es 0*2.75 siempre devovlera 0, sea lo que sea alli, con lo que entiendo que pierdo calculo de respuestas de primera opcion?
Si lees el array como "<clave> aporta el <valor>% de la media", sería algo así como " el "0 aporta el 2.75% de la media".

Crees que está mal, porque, al haber un cero en el primer elemento, "pierdes el cálculo de respuestas", independientemente de su porcentaje.
Pero, si cambiara el porcentaje del valor "0", ten en cuenta que cambiarían también el resto de porcentajes.No se pierde nada de "cálculo".Si hubiera más porcentaje de "0", habría menos porcentaje de cada uno del resto de valores, aportarían menos a la media, que se acercaría más al cero.

Etiquetas: encuesta, media, respuesta
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:51.