First, I'm assuming you have a custom origin, and that it's a web server like nginx that serves the files with a setting like "expires 1w". Also know that the amount of traffic you receive could also effect the ratio of hits to misses.
For starters, you need to see how Cloudfront sees your objects as they are served from your origin. I use Chrome Devtools to load an object and view the headers (F12, reload the browser, click Network tab, click the asset, look at the Headers sub-tab). You may see something like this, which I've trimmed to the relevant fields:
Date:Thu, 10 Jul 2015 19:35:35 GMT
Expires:Thu, 17 Jul 2015 19:35:35 GMT
Last-Modified:Tue, 16 Jun 2015 18:00:59 GMT
X-Cache:Miss from cloudfront
Something like the above would mean Cloudfront is checking every week for new content, which is what you want. But if you see a different max-age, or a longer or shorter date range between for Date and Expires, then Cloudfront is checking via a different schedule, and that could result in more calls back to your origin.
If this is the case, my first idea is that you said you originally had a different expire time, but you then changed it to one week. I believe that if you change the expire time on your origin, but you don't at least 'touch' your files to update their modified date, Cloudfront will not update with your new expires time. You could go set it to 1 Year, but if the assets are still the same as before, Cloudfront will continue to check them on whatever expires they were when they initially were loaded.