Cellmon was written to try and help diagnose this issue.
See if cellmon gives you any clues
I noticed that Cellmon does not update when it loses the network, for long or short periods.
i.e. it appears that the software stack (OFONO) stops responding/returning callbacks when the signal drops out.
It should be responding and telling you that the status is unconnected, or that the signal is zero etc. Instead the values just don’t change, and no callbacks happen.
This tells me that there is a bug in OFONO. It may not be the root cause, but even if the root cause is (say) in the cellular modem, OFONO should still be responding to dbus, and returning callbacks.
I also noticed that signal often drops dramatically at the moment when it has changed 3G<->4G. Then after a little while the strength climbs up. If signal was weakish (e.g 30%) then immediately after the change it might be 10%, then climb back up again.
However that drop seems to make the signal drop out sometimes, and then OFONO stops responding.