3 votos

Encontrar el "mejor" rango de un valor basado en el valor correlativo

Escenario: Quiero aconsejar sobre la longitud que debe tener un post para obtener el máximo número de interacciones (llamémosle "Likes"). Tengo la descripción de la longitud y los "Likes" para cada post.

(He excluido los mensajes sin Likes, ¿es esto válido o un error estadístico?)

Gráfico de dispersión de Likes v Description Length: likes v length

Podría simplemente mirar la trama y decir que 800-3500 es el mejor rango de longitud, siendo el óptimo alrededor de 2000 caracteres. Pero, ¿cómo puedo averiguarlo estadísticamente?

Así que supongo que debería:

  • Excluir los valores atípicos / suavizar los datos de alguna manera (¿usar bins?)
  • ¿Encontrar el "mejor" número de Likes? ¿O las mejores longitudes para el mayor número de Likes?
  • Encuentre el rango de longitudes que cae dentro de 1 desviación estándar de eso (cómo)?
  • ¿O tal vez quiero ajustar una curva y encontrar el punto más alto?

Lo siento, probablemente se trate de un problema bastante básico, pero no sé muy bien qué buscar ("encontrar correlación entre conjuntos de datos dentro de una desviación estándar del mejor valor" no ayudó). Así que los nombres de las técnicas y los enlaces a los artículos podrían ser suficientes. Gracias.

Conjunto de datos: https://cl.ly/lPro

1voto

kjetil b halvorsen Puntos 7012

Primero: Tú debería definitivamente incluir en los datos las publicaciones con cero "me gusta". Son informativos, y sin ellos los resultados podrían estar sesgados. Dicho esto, voy a mostrar un posible enfoque utilizando los datos que has publicado.

El recuento de le gusta como variable de recuento, podría tomarse como de distribución poisson. Sin embargo, con recuentos tan grandes y muchas posibilidades de heterogeneidad no observada En este caso, utilizaré un modelo lineal generalizado (glm) con una familia de cuasipoisson. Luego usaré un modelo spline, trazando las predicciones de ese modelo (con rojo), y las predicciones de algunas remuestreos bootstrap para mostrar la incertidumbre en las predicciones, de manera informal. El resultado es:

enter image description here

Las predicciones del bootstrap en naranja. De este gráfico se desprende claramente que no se puede decir mucho sobre la longitud óptima de los puestos.

A continuación un código en R:

library(splines)
set.seed(7*11*13) # my public seed 
mod  <-  glm(likes ~ ns(length, df=5), data=LLdat, family=quasipoisson())  

pred  <-  predict(mod, type="response")   

LLdat  <-  within(LLdat, pred <- pred)

o <- with(LLdat, order(length))
LLdat.sort  <-  with(LLdat, data.frame(length=length[o], pred=pred[o], likes=likes[o]))   

### Bootstrapping
### We do it by hand:

R <- 15
n <- 743
o <- with(LLdat, order(length))
newdata <- LLdat[o, ]
m <- NROW(newdata)
predictions <-  matrix(0.0, m, R)

with(LLdat.sort, plot(length, likes, log="y", col=scales::alpha("blue",0.4), main="'likes' versus post length", cex.main=sqrt(2)))  
with(LLdat.sort, lines(length, pred, col="red"))   
for (r in 1:R) { ind <- sample(1:n,n,replace=TRUE) ; mod <- glm(likes ~ ns(length, df=5), data=LLdat[ind,], family=quasipoisson()) ; predictions[,r] <-  predict(mod, type="response",newdata=newdata) }
for (r in 1:R) {lines(newdata[,1], predictions[,r], col="orange") }

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X