The formula for estimating rows gets a little goofy when the filter is "greater than" or "less than", but it is a number you can arrive at.
Using step 193, here are the relevant numbers:
RANGE_ROWS = 6624
EQ_ROWS = 16
AVG_RANGE_ROWS = 16.1956
RANGE_HI_KEY from the previous step = 1999-10-13 10:47:38.550
RANGE_HI_KEY from the current step = 1999-10-13 10:51:19.317
Value from the WHERE clause = 1999-10-13 10:48:38.550
1) Find the ms between the two range hi keys
SELECT DATEDIFF (ms, '1999-10-13 10:47:38.550', '1999-10-13 10:51:19.317')
The result is 220767 ms.
2) Adjust the number of rows
We need to find the rows per millisecond, but before we do, we have to subtract the AVG_RANGE_ROWS from the RANGE_ROWS:
6624 - 16.1956 = 6607.8044 rows
3) Calculate the rows per ms with the adjusted number of rows:
6607.8044 rows/220767 ms = .0299311 rows per ms
4) Calculate the ms between the value from the WHERE clause and the current step RANGE_HI_KEY
SELECT DATEDIFF (ms, '1999-10-13 10:48:38.550', '1999-10-13 10:51:19.317')
This gives us 160767 ms.
5) Calculate the rows in this step based on rows per second:
.0299311 rows/ms * 160767 ms = 4811.9332 rows
6) Remember how we subtracted the AVG_RANGE_ROWS earlier? Time to add them back. Now that we're done calculating numbers related to rows per second, we can safely add the EQ_ROWS too:
4811.9332 + 16.1956 + 16 = 4844.1288
Rounded up, that's our 4844.13 estimate.
Testing the formula
I couldn't find any articles or blog posts on why the AVG_RANGE_ROWS gets subtracted out before the rows per ms are calculated. I was able to confirm they are accounted for in the estimate, but only at the last millisecond -- literally.
Using the WideWorldImporters database, I did some incremental testing and found the decrease in row estimates to be linear until the end of the step, where 1x AVG_RANGE_ROWS is suddenly accounted for.
Here's my sample query:
WHERE PickingCompletedWhen >= '2016-05-24 11:00:01.000000'
I updated the statistics for PickingCompletedWhen, then got the histogram:
DBCC SHOW_STATISTICS([sales.orders], '_WA_Sys_0000000E_44CA3770')
To see how the estimated rows decrease as we approach the RANGE_HI_KEY, I collected samples throughout the step. The decrease is linear, but behaves as if a number of rows equal to the AVG_RANGE_ROWS value just isn't part of the trend...until you hit the RANGE_HI_KEY and suddenly they drop like uncollected debt written off. You can see it in the sample data, especially in the graph.
Note the steady decline in rows until we hit the RANGE_HI_KEY and then BOOM that last AVG_RANGE_ROWS chunk is suddenly subtracted. It's easy to spot in a graph, too.
To sum up, the odd treatment of AVG_RANGE_ROWS makes calculating row estimates more complex, but you can always reconcile what the CE is doing.
What about Exponential Backoff?
Exponential Backoff is the method the new (as of SQL Server 2014) Cardinality Estimator uses to get better estimates when using multiple single-column stats. Since this question was about one single-column stat, it doesn't involve the EB formula.