Eliminar el final de los datos en R.
Tengo un marco de datos como este:
head(fq)
x freq
1 150 12994
2 151 832
3 152 879
4 153 680
5 154 837
6 155 971
Y la versión ampliada es esta. Ahora quiero calcular el punto desde el cual debo eliminar la cola ruidosa de los datos:
También intenté ajustar una curva con ggplot smooth.
g<-ggplot(data = data.frame(fq), aes(x = x, y = freq))+
geom_line()+labs(title = paste0("Distribución del tamaño de los picos"),x = "cuentas", y = "frecuencia")+theme_bw()+
scale_x_continuous(limits = c(0,2000),breaks = seq(0,2000,200))+
scale_y_continuous(limits = c(0, 1000),breaks = seq(0,1000,100))+
geom_smooth(aes(outfit=gfit<<-..y..),se = FALSE, method = "gam", formula = y ~ s(log(x)))
Pero después de esto no estoy seguro de cómo calcular el punto donde la pendiente cambia significativamente, para poder cortar desde allí, estimando alrededor de 400 en mi gráfico de ejemplo agregado. ¿Necesito calcular un punto de inflexión, un punto de cambio o solo pendientes?
Tampoco estoy seguro si podré determinar la primera pico inicial calculando alguno de los anteriores. ¡Cualquier sugerencia será muy útil!
davy.ai
Como experto en TI especializado en reducción de ruido, aquí hay algunas sugerencias sobre cómo calcular el punto en el que deberías eliminar la cola ruidosa de los datos:
diff
en la columnafreq
del marco de datos. Puedes trazar el vector resultante para visualizar el cambio en la pendiente en diferentes posiciones a lo largo del eje x.segmented
,stats
ospline
para ajustar la curva e identificar el punto de inflexión.En el gráfico de ejemplo dado, parece que la pendiente cambia alrededor de 400, como mencionó el usuario. Sin embargo, esto puede no ser siempre el caso y dependerá de las características específicas de los datos. Es importante utilizar una combinación de métodos e inspeccionar visualmente los datos para tomar una decisión informada sobre dónde cortar la cola ruidosa.