cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Choose Language Hide Translation Bar
10+ Things You Don’t Know About JMP® (EU 2018 424)

Voted Best Invited  Paper by Summit attendees.

 

NOTE 1: Much of the content in this talk was based on two of @Jeff_Perkinson's blogs (thank you, Jeff!), which can be found at the links immediately below. Be sure to have a look. 

-Brady

 

https://community.jmp.com/t5/Jeff-Perkinson-s-Blog/10-Things-You-Don-t-Know-About-JMP/ba-p/21314

https://community.jmp.com/t5/Jeff-Perkinson-s-Blog/10-More-Things-You-Don-t-Know-About-JMP/ba-p/2895...

 

NOTE 2: We are currently having difficulty getting the video of the screen recording uploaded to the community. We apologize, and thank you for your patience as we get this sorted.

 

 

 

Level: Beginner
Brady Brady, JMP Technical Enablement Engineer, SAS

As you already know, JMP is an amazingly rich tool for data analysis and exploration. That also means that you know that there's more than one way to do almost anything in JMP. The 10 (or more!) tips and tricks shared here will make you more efficient and introduce you to techniques, keyboard shortcuts, formulas and more. Come in and level-up from novice to expert, or expert to guru.

 

The JMP Journal includes example of these 10+ tips:

 

Shortcut Keys

Help > Books > Quick Reference

JMP has keyboard shortcuts for many common tasks. For example, many of the cursors in JMP can be selected with single-key shortcuts.

A:            Arrow

?:            Question-mark

S:            Selection

R:            Scroller

H:            Hand

B:            Brush

L:             Lasso

Z:            Magnifying Glass

C:            Crosshairs

T:            Annotate

Selecting “Help > Books > Quick Reference” from the main menu will open the Quick Reference Guide, which lists these, and many more, keyboard shortcuts.

 

Make combined table      

When you right-click on a report table, you can place the output into a data table by selecting “Make into Data Table”.

When multiple tables of the same type are present within a report—for example, when an analysis has been generated using “by” groups—you can select “Make Combined Data Table”, which conveniently gathers the table you’ve clicked and all others like it into a single data table.

 

Combine Windows    

Select “Window > Combine Windows” from the main menu to quickly create dashboards by merging several open windows in JMP.

Drag columns into report windows  

Click and drag a column from the data table Columns pane (center left in the data table) onto an open report’s graph. Drop it in one of the red zones to replace the column currently being used in the graph with the column you’ve dragged over.

 

Internet Open  

Select “File > Internet Open” from the main menu, paste a webpage link into the dialog, and let JMP search for importable tables on the webpage.

 

After JMP lists the tables it has found, select the ones you’d like to import and JMP will place the data into tables automatically. A table script is saved so you can repeat this using a JSL script, and if the table holds images, a table script is provided to load these into the table if desired.

 

Copy / Paste for Column Names

Any number of column names can easily be copy/pasted from the columns pane in the left center of the data table. Select the desired columns, then use copy/paste keyboard shortcuts (CTRL-C/CTRL-V on Windows, CMD-C/CMD-V on Mac) to copy or paste the names. This makes it easy to do cleanup on many column names at once.

 

Standardize Attributes

Standardize attributes allows you to set column properties for many columns simultaneously. 

 

Select the columns whose properties you want to change, then right-click at the top of one of the selected columns and select “Standardize Attributes”.

 

Word() + Words()

    

These two functions separate a string into words based on the delimiter you choose.

Word(k, string, delimiterString) returns the k-th word in the string, based on the delimiters contained in delimiterString. For example, Word( 2, “Mg#55%A%17”, “#” ) returns the string “55%A%17”, while Word( 2, “Mg#55%A%17”, “#%”) returns the string “55”.

Words(string, delimiters) returns a list of all the words in the string, so Words(“Mg#55%A%17”, “#%”) returns the list { “Mg”, “55”, “A”, “17” }.

Both functions use the empty string, “”, to break the string into individual characters. Therefore, Word (5, “abcdefg”) returns the string “e”. If delimiterString is omitted, the space string, “ “, is used as a delimiter.

 

Copy/Paste using Select Matching Cells / Invert Selection

When rows are selected in a data table, copy + paste operations apply to only those cells that are highlighted. This makes it easy to place text into the buffer using CRTL-C, select rows in a table using some criteria (using the “Rows > Row Selection” submenu or selecting points in a graph, for example), and paste the text into only those cells highlighted in the table.

This technique is particularly helpful when cleaning up data, or categorizing rows based on selections made in graphs.

 

Multiple Response: change permutations to combinations    

When working with multiple response data, sometimes the order of the responses is important, and sometimes only the set of responses is important—not the ordering. Any string operation will consider “cat, dog” to be different from “dog, cat”—the Summary platform works this way, for example. You can make sure that all elements within a given set appear in alphabetical order (so only “cat, dog” would be possible), using the following approach:

From the main menu, select “Cols > Utilities > Make Indicator Columns” to create an indicator column for each element found in the multiple response data. As you will notice, the indicator columns appear in alphabetical order.

Next, select all of the indicator columns, then select “Cols > Utilities > Combine Columns” from the main menu, making sure to check the “Selected Columns are Indicator Columns” checkbox. The column produced is like the column you originally selected, except that all elements are in alphabetical order, which ensures that each set of responses has a unique representation.

 

Value ordering    

JMP orders categorical axes alphabetically, but you can order them any way you want by using the Value Ordering column property.

Right-click at the top of a column and select “Column Properties > Value Ordering”. Using the dialog, reorder the values any way you would like. After applying the changes, the values will appear in the order you specified in all graphs and reports.

 

Axis column property

This column property lets you specify the axis settings for a column, so you don’t have to re-edit this variable’s axes whenever the variable is used in a graph. To access, right-click on the top of the column and select “Column Properties > Axis”.

 

Using Copy/Paste within dialogs  

Many of JMP’s dialogs support copy/paste operations. In the example used in the talk, we copied a 51-row by 2-column block of data from a table and pasted it into a Value Labels dialog, greatly simplifying the data entry process and reducing the opportunity for errors.

 

Summary Histograms

In addition to computing summary statistics, the Summary platform can write histograms to the summary table. The histogram option is located in the Summary platform’s launch dialog, at the bottom of the Statistics drop-down menu.

 

Auto-join from Summary

You can perform a summary, and drag results back to the source table. This also works for newly created columns in the summary table.

 

ex: P.8 - P.2 for weight  

     

Any column in a linked summary table—even ones that you created after the summary table was produced—can be joined to the source table by drag + drop, without the need for a Join.

To do this, click and hold on the column header you’d like to drag, then drag it over to the source table and drop it on a column header. The column will be inserted into the table in the position where you dropped it.

 

Easily support “By” groups in scripts.

Use a summary table to cycle through selections in the main table—avoiding the need for cumbersome where clauses in JSL

To support “By” groups for analyses that don’t support these natively, Summary tables can be used instead of compound “Select Where” clauses.

Once the “By” groups are known, create a Summary table, hidden if desired, and move through it by selecting one row at a time. As this is done, all corresponding rows in the source table will be selected, so a subset can be taken and the analysis can be performed on only the data in the subset table.

When you’ve finished, close the subset table, and repeat the process for each remaining row in the summary table.

 

Number within group for quick queries and subsets

The simple formula “Col Cumulative Sum ( 1, <<by group columns>> )” counts the instances of each row within the specified groups, in the order in which they appear in the table. Each time the table is sorted, the numbers update to reflect this; in this way, the new column serves as a dynamic ranking tool, allowing us to answer questions that otherwise would require time-consuming query formation or additional ranking columns for each question posed.

In the example in the talk, we used “Country” and “Type” as grouping columns. This allowed us to easily answer questions like “Which are the 3 cars of lowest weight, within each combination of Country and Type?”. To answer, we merely sorted “Weight” in descending order, selected a 1, 2 and 3 in the cumulative sum column, then invoked “Select Matching Cells” and produced a Subset table from the selected rows.

Using a similar approach on time-stamped data, it would be easy to produce subsets containing the most recent observation for each tool, or the first 5 survey responses received within each demographic, for example.

 

Pareto Frontier

Rows > Select Dominant

 

(Wikipedia): Pareto efficiency or Pareto optimality is a state of allocation of resources from which it is impossible to reallocate so as to make any one individual or preference criterion better off without making at least one individual or preference criterion worse off, [and] the Pareto frontier is the set of all Pareto efficient allocations.

In JMP, we can select the Pareto frontier by choosing “Rows > Row Selection > Select Dominant” from the main menu. In the example from our talk, this resulted in the selection of 6 of 75 candy bars. Each of the 6 bars was optimal in the sense that it was impossible to select any other bar both having fewer calories, and containing at least as much unsaturated fat as the optimal bar.

 

Name selected in column

Choosing “Rows > Row Selection > Name Selection in Column” from the main menu creates a 2-vaued column, where one value is assigned to all currently selected rows, and another value is assigned to the unselected rows. This makes it easy to re-select exactly the same set of points at a later date, using this new column and the “Select Matching Cells” feature.

 

Row State columns

Columns to which you assign the “Row State” data type are able to store the table’s row states for retrieval later. Row selection, exclusion, hiding, markers and colors are examples of properties that the row state column can store, and you may use as many row state columns as you wish, allowing you to easily switch among various row state configurations according to your needs.

Row state columns are easily identified by their red “star” icon.

 

The “Selected” formula column

Selected(Row State())

  

What if we could make “Name Selection in Column” dynamic? We can! Using the simple formula “Selected ( Row State ( ) )", we make a formula column that contains 1 for all selected rows, and 0 for all unselected rows. Using this new column, we can easily perform comparisons between the selected and unselected rows.

By assigning this column the Nominal modeling type, we can select rows in one graph, and in another graph, compare these to the unselected rows using histograms, boxplots, analysis platforms, or anything else we can imagine.

If we assign the Continuous modeling type to this column, then by computing the mean of the selection column, we can see what proportion of rows have been selected… doing this with a “By” group can easily reveal interesting differences between groups.

 

Using Graph Builder’s Save to Table and image labels to provide drilldowns

From Graph Builder’s red triangle menu, select “Make into Data Table” to save the graph images to a table. You can then join these images back to the original data table and use them as markers, providing the viewer more information on demand.

 

Optimizing with custom desirability functions

JMP’s profiler helps you find the factor settings that optimize outputs according to criteria you set through desirability functions.

By default, these functions are specified by dragging the default desirability curves into appropriate shapes. You can, however, optimize with respect to a custom desirability function by following these steps:

Add the custom desirability function as a formula column, dependent on the prediction formulas for those responses you wish to optimize.

Select “Graph > Profiler” from the main menu, cast the prediction columns and the custom desirability column into the “Y” role, and click “OK”.

From the Prediction Profiler’s red triangle menu, select “Optimization and Desirability > Desirability Functions” to turn on the desirability functions. Select “Optimization and Desirability > Set Desirabilities”, and set the importance value of all prediction columns to 0, while setting the importance of the custom desirability function to 1.

Finally, select “Optimization and Desirability > Maximize Desirability” to optimize the inputs subject to the custom desirability function.

 

Drag images into frameboxes              

JMP graphs support a variety of built-in backgrounds, but you can also drag image files into the graphs. This feature can be used (along with the necessary JSL) to get data that would be otherwise unavailable into JMP.

 

Two scripted examples were used in the talk: the first used an image of a function to place (x,y) points into a data table, after which a model was fit and prediction formulas were saved. These allowed us to generate data from the function as desired.

In our second example, we sketched the density of a distribution, allowing us to sample from the distribution without first having to derive a mathematical representation of it.