Segmenting Power Variation DataWe're working on a use case where the customer has power variation data (Average and Max) from a product. They previously segmented the graph into different workload states manually based on changes in the power value. Now, they aim to automate this segmentation process using JMP.
I have attached the data along with a screenshot showing the expected (manually derived) outcome. Each identified state is defined by a start and end point, which are listed in the "Start / End point" column. For each state, a buffer of ±5 rows is applied around the actual start and end points.
Some important clarifications after speaking with the customer:
1. The variation is not time-based
2. The number of states is not fixed. It won’t always be 11 as shown in the screenshot
3. State 7 and 8 in their manual result were distinguished using the 2nd Y-axis variable
I experimented with hierarchical clustering and k-means clustering, which produced results close to the manual outcome but not an exact match. Any suggestions for better automating this segmentation process in JMP?
Re: Segmenting Power Variation DataMy initial thought would be to remove the zeros, then smooth the data and look for spikes in the derivative as markers of the different segments. I think that is doable but a bit "brute force". Clustering sounds like a "nicer" solution, although I don't have much experience with it.
Using Hierarchical Clustering, I was able to make a bit of progress by setting Method to Single, Data format to Data is stacked, and Unstandardized. If I understand correctly, I think this will form clusters by looking at "neighboring" points that are close to each other in both Time and Power, by considering them as points in a 2D space with Time as X and Power as Y. Maybe someone else can take it from here?
Hierarchical Cluster(
Y( :"Time(s)"n, :"Power AVG (W)"n ),
Method( "Single" ),
Standardize Data( 0, "(for backward compatibility)" ),
Standardize By( "Unstandardized" ),
Dendrogram Scale( "Distance Scale" ),
Number of Clusters( 20 ),
SendToReport(
Dispatch( {"Dendrogram"}, "Clust Dendro", FrameBox,
{Frame Size( 47, 700 )}
)
)
);Re: Segmenting Power Variation DataOn 2nd thought, I think using "Data is stacked" is incorrect. But using "Single" + "Unstandardized" is still giving good results on my end.