So, you want calculate “speed” dynamically, right?
Joystick moves in range -1.0 to +1.0, usually range from -0.25 to 0.25 is deadzone, which must be. This means you have active range from -1.0 to -0.25 and from 0.25 to 1.0.
Probably you want split active range to smaller ranges and each will set another speed value? Right?