Which image are you using (run configure_edison --version)?
Are you checking the lines from the devices?
What is the output of running i2cdetec -l?
Are you powering the shield with 3.3V or 5V?
When I run configure_edison --version, result is 159.
Yes, the line is no problem because when I upload it into Arduino Uno, It works very well.
When I run i2cdetect -l, result is below
i2c-1 i2c i2c-designware-1 I2C adapter
i2c-2 i2c i2c-designware-2 I2C adapter
i2c-3 i2c i2c-designware-3 I2C adapter
i2c-4 i2c i2c-designware-4 I2C adapter
i2c-5 i2c i2c-designware-5 I2C adapter
i2c-6 i2c i2c-designware-6 I2C adapter
i2c-7 i2c i2c-designware-7 I2C adapter
I am powering my board with 3.3V.
Could you give me any help?
The 3.3V you are using to power the MPL3115A2 are from the SparkFun block or from another supply? If you are using the Sparkfun and Edison as source for the MPL3115A2, I suggest you to use another power supply for this shield.
Also, the SparkFun and the MPL3115A2 have both Pull-Up resistors, are you measuring the voltage in both VCC in order to check that the voltage is not dropping?
Have you checked the SDA and SCL lines with a logic analyzer or oscilloscope? I know it worked with an Arduino but we could check in the signals if the problem is related to noise, to the SCL, if the Edison is writing as it should or the amplitude of the signals. I think it could helps to determine what we are missing to make it work
The lost arbitration error can occur when the I2C slave doesn't receive a stop signal so it starts sending random data or can lost the control of data. I suggest you to check the datasheet of the shield and verify you are following the communication protocol for this shield. Also verify you are using the right address of the shield when you use the I2C protocol.
I checked the Shields Test Report and I found that there are tests with the Adafruit* MPL115A2. Take a look at it and let me know if that code works for your SparkFun-shield too.