I have to say that my measured results don't really square with the estimated pH for most recipes.
I finally got around to putting together a spreadsheet to compare the measured mash and first wort pH and the mash pH predicted from the color (SRM) of the beer for my last 20+ batches and I'm surprised how well it actually works. The surprise is because I re-brew beers so many times that in most cases I go with my gut feel or past experiences when determining what residual alkalinity and acid addition to target.
The results are shown in this table:
green means less or equal to 0.1 pH difference, yellow is <= 0.2 difference and red is > 0.2 difference.
The predictions are in the columns labeled "mash pH (SRM and mash thickness)" and "mash pH (ARM and grist buffer)"
The red ones are two batches of Alt where the mash pH was surprisingly high and the addition of lactic acid dropped the pH much more than expected. I don't know what was going on there and consider this a fluke for now.
Then there is a Dunkel where most the pH and color is determined by the base malt. This is a difficult case to handle for any mash pH predictor unless it knows the pH of the base malt. That pH only shows a loose correlation with the color of the malt.
But it does seem to do reasonably well for beers that use a light base and specialty malts for color, at least with the limited set that I tried.
"mash pH (SRM and mash thickness)" is similar to what is published on my website, implemented in my current water calculator and most likely used by the EZ water calculator. "mash pH (ARM and grist buffer)" is similar but contains a few tweaks I'm planning to release in an upcoming version.