It could be many things. To begin diagnosis, the very first thing to do is hookup an OBD reader at the OBD (Onboard Diagnostics) connector under the dash and read any stored codes. Even if the check engine light is not lit, any engine misfire condition should trip a fault code. Starting this way is much more sensible than just replacing parts.