Our World Statistics Day conversations have been a great reminder of how much statistics can inform our lives. Do you have an example of how statistics has made a difference in your life? Share your story with the Community!
Choose Language Hide Translation Bar
Complex probit estimation made simple

JMP offers a lot of sophisticated statistical analyses that are easy to use because of its well-designed user interfaces. Nonlinear estimation is not as easy to use because the incredible flexibility of that platform may challenge even a statistically savvy person. However, with JMP Scripting Language (JSL), it is easy to create a simple application that is tailored to the specific needs of an application area and is suitable for fast repeatable usage.

Estimating parameters of nonlinear functions starts with creating of columns within the data table that contain formulae to specify the parameters to be estimated as part of the regression function and a loss function that shall be minimized to find the final regression estimate (if that shouldn’t be done by least squares).

Probit regression is a frequently used analysis for dose response experiments with binary outcomes (response / no response). Its application is thoroughly described in JMP Help and Books, but its usage requires at least a basic mathematical understanding; also, it is tedious to use, especially when needed frequently. The solution here is to write a JSL script. All you need to do is to assign the right variables in your data set to the roles needed for the regression using your typical nomenclature and let JMP do the rest.

The data set needs to contain the columns for dose, total number of items under test and number of items that responded, as you can see in Figure 1: Data.

Figure 1: Data

The JSL script is simple as well. It consists of three parts: the user dialog (Figure 2: Dialog), the insertion of the formula columns and the application of the Nonlinear platform.

Figure 2: Dialog

You don’t need to write the evaluation statements from scratch because you can do the analysis interactively and save the script to your script window. Then all statements are there, and you only need to substitute the variable names from the program. An additional advantage of the scripting solution is that you can cover specific requests , like the calculation of various inverse predictions. They are automatically generated, and the user doesn’t need to call them from the context menu separately.

Figure 3: Result

You can distribute and install the whole script as a one-click operation when it is wrapped as an add-in.

You can download this JSL application from the JMP File Exchange.

Article Labels

    There are no labels assigned to this post.


Siamak Roshandel wrote:


I want to know can I use proc probit for calculating LT50? And if it possible in which section I can find it


Bernd Heinen wrote:

Hi Siamak,

your responding to my blog that is about probit analysis in JMP and there is no Proc Probit but rather a nonlinear platform. If you run this, the result report always has the red triangle (hot spot) from which you can select Estimates--> Inverse Prediction. It opens a table in which you can enter several ED values that you want to be calculated.

If on the other hand you are using SAS Stat and the Proc Probit there, then you need to enter the INVERSECL option with this syntax: INVERSECL<(PROB=rates)> .

I hope I could help



Sajeewa Amaradasa wrote:

Hi Bernd;

Can you explain how to use JMP to calculate EC50 (effective concentration for 50% growth inhibition) for a fungicide? I want to find EC50 for different isolates of a fungus. I have different % inhibitions from 4 replicates for different fungicide doses per each isolate.Can I use the same application posted above for my analysis.




Karen Clyde wrote:

I'd like to use this for >200 separate data groups. Without a "by" option, there doesn't seem to be an easy way to do this (unlike if you launch the analysis using fit model / generalized linear model). Any ideas?

Community Manager

Gail Massari wrote:


You can submit SAS code from JMP. If you are looking for an equivalent capability in JMP, consider participating in the JMP Software Community Forum for questions and answers to specific questions. JMP users find that is the quickest way to get help from other users. JMP developers and technical support people also participate. See www.jmp.com/forum.


Tisha King-Heiden wrote:

I have successfully used this script to calculate LC50s in JMP11, and want to use the LC50 ratio to compare different LC50s across treatments. To do this, I need the Covariance. I determined that the LDParm is the slope, and am wondering if covariance is also labeled differently. If not, how can I determine the covariance?


Bernd Heinen wrote:

Hello Tisha,

First of all your observation is correct, the value associated with LDParm is the slope of the regression line.

An additional hint: above the Solution outline there is a key for Confidence limits. You can specify your confidence level and then confidence limits for both parameters are obtained. Each confidence bound requires separate iterations. The results are displayed in additional columns in the parameter table. They may be of help for your comparisons also.

Unfortunately the covariance matrix is not printed in the report. The only way to get it is to go to the hot spot (the red triangle in front of â Nonlinear Fitâ and Save Formulas --> Save Std Error of Predicted. This inserts a new column into your data table with a formula. You can open this formula and the first part therein is the covariance matrix. You can copy and paste it and so use it for your calculations.

I hope, I could help with my explanation.

Best regards



Steve wrote:

Hi there I need help with the probit estimation JSL, so some reason i cannot figure each time i try to run the I get an error message " cannot set value for the column 'Dose' because the row number (-1) is not valid"

Does anyone know what I am doing wrong? Please help Need urgent help to do some dose response curves for my thesis


Bernd wrote:

Hello Steve,

the probit calculation itself is a bit tedious, but the results of the respective experiments can be reported in a very simple structure. It may look like this table:

Dose | No. of Units under Test | No. of events observed

10,000 | 10 | 10

1,000 | 10 | 10

100 | 10 | 9

10 | 10 | 6

1 | 10 | 3

0.1 | 10 | 0

These columns correspond to the fields (Log) Dose, # Total and # Responses in the scripts dialogue. No matter in which form your data is originally, JMP has all the tools to reshape it in its Tables menue.


Joe wrote:

I am having the same problem as Steve. I have 3 columns; one for dose, one for total organisms, one for total events. When I use the probit add-on, I receive the same error message that he did "Cannot set value for the column 'Dose' because the row number (-1) is not valid."


Bernd Heinen wrote:

Hello Joe,

I was not able to reproduce that error, could you please send me your JMP data table to bernd.heinen@jmp.com


David wrote:

Hi Bernd,

Is this JSL script still available from the JMP File Exchange? I cannot find it searching for "probit" or "regression"



Bernd Heinen wrote:

Hello David,

I apologize for having been a bit inattentive. Now it's available again and a keyword search for "probit" will bring you there.

Best regards



Please Help wrote:

Is it still available for download? I cannot seem to find it. Thanks.


Arati Mejdal wrote:

Hi, there. Yes, it is available. Because we moved the File Exchange, the location of the file changed. Here it is: https://community.jmp.com/docs/DOC-6974

Sorry for the inconvenience.