Bayesian evaluation for the likelihood of Christ's resurrection (Part 44)

Let us summarize the "skeptic's distribution" argument for Christ's resurrection.

We have already seen that any kind of reasonable investigation into Jesus's resurrection accounts would conclusively demonstrate that Jesus did rise from the dead. The only possibility left for the skeptic is to turn to unreasonable hypotheses - that is, to crackpot theories like conspiracies.

The distinguishing feature of these theories is that they postulate a near-total interdependence among the evidence, as if they were all manufactured by a single source - the conspiracy. This allows them to ignore the abundance of evidence for a certain position, and instead attribute it all to a rather unlikely prior.

Now, there are many excellent reasons to reject any kind of conspiracy theory when it comes to Jesus's resurrection. Just the conversion of Apostle Paul would be enough to put it beyond any realistic possibility. But that only scratches the surface of the many anti-conspiracy evidence available to the resurrection. However, we will not quantitatively consider these. We will merely use them to sandbag our conclusion - with the note that they would apply their full, independent force against the skeptic's position, since crackpot theories are all that the skeptic has left at this point.

So then, how did we quantitatively consider the interdependence of evidence, fully taking into account all the different possible crackpot theories?

We construct the "skeptic's distribution" - the probability distribution for achieving a certain level evidence for a resurrection, assuming a skeptical, anti-supernatural worldview. This probability distribution is actually quite accessible, since every single non-Christian resurrection report in world history would be the result of a sample drawn from it. Furthermore, such a distribution would fully take into account the aggregate of all the different types of crackpot theories that actually could have happened in history. The results of things like conspiracy theories or religious mass delusions would show up in the samples, and they can then be extrapolated for things beyond what actually happened in history.

Once we have the "skeptic's distribution", the rest of the calculation is easy. We calculate the "skeptic's probability", which is the probability for the "skeptic's distribution" to generate at least a Jesus-level resurrection report. Since the corresponding "Christian's probability" is of order unity, the Bayes' factor for Jesus's resurrection is essentially the reciprocal of the "skeptic's probability".

We first constructed the "skeptic's distribution" using the most pro-skeptical assumptions possible. Even then, this gave "even odds" of Jesus's resurrection having taken place, under an impossibly favorable set of assumptions for skepticism.

Re-running the calculation with demonstrably more realistic - but still very conservative - assumptions, we saw that the Bayes' factor for Jesus's resurrection was still at least around 1e14 or 1e16. Against a prior of 1e-11 for someone rising from the dead, this puts the final odds for Jesus's resurrection at 1e3 to 1e5 - that is, somewhere between 99.9% to 99.999%. All this is with only part of the evidence for Christianity (those summarized in 1 Corinthians 15), and without considering any evidence that applies specifically against conspiracy theories.

The conclusion is clear: Jesus almost certainly rose from the dead.

We will begin a new line of thinking for the resurrection in the next post.


You may next want to read:
Adam and Eve were historical persons. Who were they? (Part 1)
Christianity and falsifiability
Another post, from the table of contents

Bayesian evaluation for the likelihood of Christ's resurrection (Part 43)

This is another Jupyter notebook. It contains python code that generates the probabilities of a "skeptic's distribution" generating a Jesus-level resurrection report.

First, we import some modules:

In [1]:
import numpy as np
import pandas as pd
from scipy.stats import lognorm, genpareto

We then write a function to simulate getting the maximum value out of n samples from a given distribution:

In [2]:
def max_out_of_n_from_dist(dist, out_of_n=1e9):
    manageable_n = 100000
    if out_of_n <= manageable_n:
        return dist.rvs(out_of_n).max()
    else:
        top_percentiles = \
            np.random.rand(manageable_n) * manageable_n / out_of_n
        return dist.isf(top_percentiles.min())

We then write a function to calculate the "skeptic's probability" - the probability of a given "skeptic's distribution" generating a Jesus-level resurrection report. The various parameters fed into the function determines the specific form of the "skeptic's distribution".

In [3]:
def calculate_p_skeptic(
    dist_type, #genpareto or lognorm
    shape_params_dist, #np.logspace or np.geomspace 
    sample_size, #1e9 or 1e10
    greater_by, #24 or 50
    n_outliers, #50 or 250
    n_max_draws=10000,
):
    
    if dist_type == genpareto:
        shape_limits = [0.02, 2,1]
    elif dist_type == lognorm:
        shape_limits = [0.2, 10.0]
        min_shape = 0.2, 
        max_shape = 10.0
    if shape_params_dist == np.logspace:
        shape_limits = [np.log10(x) for x in shape_limits]
    shape_params_list = shape_params_dist(
        shape_limits[0], shape_limits[1], 105)
        
    shape_params = []
    p_max_greater_by = []
    n_outliers_estimation = []
    
    for shape_param in shape_params_list:
        dist = dist_type(shape_param, scale=1, loc=0)
        for i in range(n_max_draws):
            shape_params.append(shape_param)
            max_val = max_out_of_n_from_dist(dist, sample_size)
            p_max_greater_by.append(dist.sf(max_val * greater_by))
            p_outlier = \
                (dist.sf(max_val * 0.2) - dist.sf(max_val)) \
                / dist.cdf(max_val)
            n_outliers_estimation.append(
                int(round(p_outlier * sample_size)))

    result_df = pd.DataFrame({
        "shape_params":shape_params, 
        "p_max_greater_by":p_max_greater_by,
        "n_outliers":n_outliers_estimation,
    })
    
    match_df = result_df[result_df["n_outliers"] == n_outliers]

    if match_df.shape[0] < 50:
        print "warning: match_df.shape = ", match_df.shape
    if match_df["shape_params"].max() == shape_params_list.max():
        print "warning: maxed out shape_param"
    
    p_skeptic = match_df["p_max_greater_by"].mean()
    
    return p_skeptic

Now, let us explore some of the different possible forms of the "skeptic's distribution", and calculate their "skeptic's probability".

Here's one we looked at before. It uses the most pro-skeptical assumptions possible to generate the maximum possible "skeptic's probability".

In [4]:
calculate_p_skeptic(
    dist_type=genpareto,
    shape_params_dist=np.linspace,
    sample_size=int(1e9),
    greater_by=24,
    n_outliers=50,
)
Out[4]:
4.139635934580683e-12

Here's another possibility, only changing the most questionable parameters to the edges of their likely values. Here are the changes we're making:

The prior distribution of the shape parameters: from being uniform in linear space to uniform in logarithmic space.

The sample size (that is, the number of reportable deaths in world history): from 1e9 to 1e10.

The number of "outliers" (That is, the number of reports of a "resurrection", with at least a "some people say..." level of evidence): from 50 to 200.

All of these changes are almostly certainly true to at least that extent. The actual truth may be even more extreme - for example, the number of outliers may actually be in the thousands.

This gives a very conservative answer for how small the "skeptic's probability" may be.

In [5]:
calculate_p_skeptic(
    dist_type=genpareto,
    shape_params_dist=np.logspace,
    sample_size=int(1e10),
    greater_by=24,
    n_outliers=200,
)
Out[5]:
1.866911316237698e-14

Here we've changed a few more parameters. The distribution type has been changed to lognormal, we've increased the factor by which the Jesus-level of evidence exceeds the maximum, and the number of "outliers" has been increased. The "skeptic's probability" calculated here may perhaps be called "likely".

In [6]:
calculate_p_skeptic(
    dist_type=lognorm,
    shape_params_dist=np.logspace,
    sample_size=int(1e10),
    greater_by=50,
    n_outliers=300,
)
Out[6]:
3.855529808259304e-16

Here is another combination of parmeters which may be called "likely".

In [7]:
calculate_p_skeptic(
    dist_type=lognorm,
    shape_params_dist=np.logspace,
    sample_size=int(3e10),
    greater_by=70,
    n_outliers=200,
)
Out[7]:
6.095046577090992e-17

So, those are some of the possible values for the "skeptic's probability". Recall that there are other, previously enumerated factors which we have not yet taken into account.

In particular, all the calculations up to this point only take into the amount of testimonies for Christ's resurrection. We have not yet considered the specific kinds of evidence for Christianity that directly counters things like conspiracy theories or mass religious delusions. The ample amounts of such evidence is particularly effective, because such crackpot theories are what makes up most of the skeptic's possibilities at this point. The effect of considering these additional evidence are hard to quantify, but they'd easily be worth another several orders of magnitude.

So we see that the "skeptic's probability" of 4e-12 really was a nearly impossible best-case scenario for skepticism. A very conservative - but not fantastical - value would be more like 1e-14, and a likely scenario gives values like 1e-16. Again, all this considers only part of the evidence for Christianity, and the "skeptic's probability" is bound to be another several orders of magnitude smaller.

The Bayes' factor then is essentially the reciprocal of this value. That is, the Bayes' factor for Jesus's resurrection is at least on the order of 1e14 to 1e16, amply sufficient to overcome a prior odds of 1e-11, with little possible doubt remaining. Jesus almost certainly rose from the dead.

The next post will be a summary of this whole "skeptic's distribution" argument.


You may next want to read:
The intellect trap
How is God related to all other fields of study?
Another post, from the table of contents