Google Analytics es una herramienta muy poderosa. Una de las métricas más consultadas es la de tiempo en el sitio. Consultando la misma, podemos obtener conclusiones muy útiles sobre el comportamiento de los usuarios en nuestro sitio. Sin embargo, esta métrica no es exacta: se calcula solamente cuando el usuario realiza una interacción con el sitio (por ejemplo, una página vista o un evento).
 
Esto significa que, si un usuario ingresa a nuestro sitio, se queda en la página principal viendo un video que no está configurado como evento, o leyendo un artículo muy extenso, y cierra la ventana, Analytics solamente sabrá que ese usuario ingresó y se fue: o sea, el tiempo en el sitio de este usuario, para Google Analytics, será de 0 segundos.
¿Cómo solucionamos esta situación?
Una de las metodologías más útiles es la de ejecutar un evento genérico cada 10 segundos, de manera tal que Analytics sepa que ese usuario continúa en nuestro sitio y nos brinde una métrica más precisa.
A continuación, les dejo el código que deben ingresar en su sitio para que se ejecute este evento “Tiempo en el Sitio” genérico.
 
Código para Classic Analytics
 

<script>
(function (tos) {
  window.setInterval(function () {
    tos = (function (t) {
      return t[0] == 50 ? (parseInt(t[1]) + 1) + ':00' : (t[1] || '0') + ':' + (parseInt(t[0]) + 10);
    })(tos.split(':').reverse());
    window.pageTracker ? pageTracker._trackEvent('Tiempo en el Sitio', 'Log', tos) : _gaq.push(['_trackEvent', 'Tiempo en el Sitio', 'Log', tos]);
  }, 10000);
})('00');
</script>

 
Código para Universal Analytics

<script>
(function (tos) {
  window.setInterval(function () {
    tos = (function (t) {
      return t[0] == 50 ? (parseInt(t[1]) + 1) + ':00' : (t[1] || '0') + ':' + (parseInt(t[0]) + 10);
    })(tos.split(':').reverse()); ga('send','event', 'Tiempo en el Sitio', 'Log', tos,{'nonInteraction': 1});
  }, 10000);
})('00');
</script>

 
http://briancray.com/posts/time-on-site-bounce-rate-get-the-real-numbers-in-google-analytics