Me gustaría detectar cambios en datos de series temporales, que generalmente tienen la misma forma. Hasta ahora he trabajado con el paquete changepoint
para R y las funciones cpt.mean(), cpt.var()
y cpt.meanvar()
. cpt.mean()
con el método PELT funciona bien cuando los datos generalmente se mantienen en un nivel. Sin embargo, también me gustaría detectar cambios durante descensos. Un ejemplo de un cambio, me gustaría detectar, es la sección donde la curva negra cae repentinamente mientras que realmente debería seguir la línea punteada roja ejemplar. He experimentado con la función cpt.var(), sin embargo no obtuve buenos resultados. ¿Tienes alguna recomendación (no necesariamente tiene que usar R)?
Aquí están los datos con el cambio (como objeto R):
dat.change <- c(12.013995263488, 11.8460207231808, 11.2845153487846, 11.7884417180764,
11.6865425802022, 11.4703118125303, 11.4677576899063, 11.0227199625084,
11.274775836817, 11.03073498338, 10.7771805591742, 10.7383206158923,
10.5847230134625, 10.2479315651441, 10.4196381241735, 10.467607842288,
10.3682422713283, 9.7834431752935, 9.76649842404295, 9.78257968297228,
9.87817694914062, 9.3449034905713, 9.56400153361727, 9.78120084558148,
9.3445162813738, 9.36767436354887, 9.12070987223648, 9.21909859069157,
8.85136359917466, 8.8814423003979, 8.61830163359642, 8.44796977628488,
8.06957847272046, 8.37999165387824, 7.98213210294954, 8.21977468333673,
7.683960439316, 7.73213584532496, 7.98956476021092, 7.83036046746187,
7.64496198988985, 4.49693528397253, 6.3459274845112, 5.86993447552116,
4.58301192892403, 5.63419551523625, 6.67847511602895, 7.2005344054883,
5.54970477623895, 6.00011922569104, 6.882667104467, 4.74057284230894,
6.2140437333397, 6.18511450451019, 5.83973575417525, 6.57271194428385,
5.36261938326723, 5.48948831338016, 4.93968645996861, 4.52598133247377,
4.56372558828803, 5.74515428123725, 5.45931581984165, 5.58701112949141,
6.00585679276365, 5.41639695946931, 4.55361875158434, 6.23720558202826,
6.19433060301002, 5.82989415940829, 5.69321394985076, 5.53585871082265,
5.42684812413063, 5.80887522466946, 5.56660158483312, 5.7284521523444,
5.25425775891636, 5.4227645808924, 5.34778016248718, 5.07084809927736,
5.324066161355, 5.03526881241705, 5.17387528516352, 5.29864121433813,
5.36894461582415, 5.07436929444317, 4.80619983525015, 4.42858947882894,
4.33623051506001, 4.33481791951228, 4.38041031792294, 3.90012900415342,
4.04262777674943, 4.34383842876647, 4.36984816425014, 4.11641092254315,
3.83985887104645, 3.81813419810962, 3.85174630901311, 3.66434598962311,
3.4281724860426, 2.99726515704766, 2.96694634792395, 2.94003031547181,
3.20892607367132, 3.03980832743458, 2.85952185077593, 2.70595278908964,
2.50931109659839, 2.1912274016859)
0 votos
Tenga en cuenta que si solo está solicitando código R, eso sería inapropiado aquí. Si está solicitando consejos metodológicos generales, eso está bien. Podría incluir algo de código R, pero de nuevo, podría no ser así.
1 votos
Buen comentario, estoy interesado en una solución general, usando R sería conveniente.