Reduce noise from a Hall effect sensor
I'm not sure what's in the Arduino on that PWM output, but it looks very odd to apparently have no gate resistor into a MOSFET, and no current limit resistor on the LED.

At the point you start to turn onto the MOSFET, you have a short-circuit to ground in the form of the gate capacitance - on a big MOSFET that's quite a lot of capacitance, and while that's charging, the Arduino's working very hard indeed to supply that current.

Once the gate capacitance charges enough to reach the forward voltage (Vf) of the LED, that turns on and represents a short-circuit to Vf.

I couldn't say whether either of these things is causing noise on the analogue input, but they're unlikely to help, as they're probably causing a lot of noise on the Arduino.

Separately, and I don't know if you're already doing this, but in this type of system I would usually try to arrange to take the analogue measurement synchronously with the PWM, so that I could consistently avoid the noise around the switching of the load.  If you're sampling asynchronously to the PWM, that may well be the cause of occasional big spikes.