If you are using a GoPro, try it without the GoPro turned on and see if there is any difference.
I unplugged my compas cable and loosely twisted it until the coils reached all the way to the GPS board, then reconnected it. I also did the same with the GPS servo cable going o the NAZA.
The GoPro creates a lot of electrical hash. Trying to introduce some basic shielding to the compas cable may help, as the compass data daisy chains through the GPS board to the NAZA.
Also, the backup battery on the GPS board may be below the 1.8 VDC minimum to be an effective part of the circuit. According. The uBlox design and integration info, if resistance is detected across the battery backup terminals, GPS performance could suffer.
On 2 new FC40s that I have, one measures less than .5VDC and the other was .025 VDC.
If GPS data stored in RAM is becoming corrupted due to a failing backup battery, the first flight of the day may take an extended time to do a basic cold start; after unsuccessfully reconciling the corrupt data with the new data coming in once the main Battey is onected.
Before I put the GoPro in a H3D2 gimbal, I could remove it, turn it on, and place it close to the phantom body to induce sat lock loss. Place it near the top and get total loss; near sides or bottom and get partial loss.
Add a gimbal to the mix, and the GoPro may be rotated closer to a poorly shielded data cable and do the same in flight.
When you look inside the Phantom, you will probably see where DJI twisted the servo cables going from the receiver to the NAZA. This seems like a good enough recommendation to give the other NAZA input cables the same treatment.