I like to incorporate this suggestion by @twospoons (take multiple readings at slightly different intervals) Link
Paul’s Example Code:
float Get_PO2(void) // read cylinder pressure
{
int i;
float temp =0;
double acc=0;
for (i=0;i<64;i++) // long mutliread to get rid of noise
{
acc+=analogRead(Pcyl);
delay(i);
}
acc=acc/64;
temp= mapfloat(acc, cyl_inlo, cyl_inhi, 0, cyl_outhi);
But your failure detection would depend on the output of the individual sensor model when it fails .