'NEGATIVE'
is a string not a number, hence ORA-01722 when you try to turn it into a number. So you need to handle those occurrences. Something like:
select count(
case when result = 'NEGATIVE' then 1
when result != 'PROBLEM' and to_number(result) < 1 then 1
else null
end) as tot_negatives
from your_table;
Strictly speaking 0.15 is not negative because it is greater than zero, but I've implemented your definition.
Note that I've assumed you don't have any other rogue non-numeric strings in your column, beyond 'NEGATIVE' and 'PROBLEM'. If there are others, then you need to handle them too.