Have you check your logs under the Diagnose menu?
I have a LowBatteryLog entry for every time my phone goes off.
I have an iPhone 6s running 10.2 and my serial number is not in the Apple Program for replacement. I'm experiencing this issue since all iOS 10 betas to iOS 10.2.
This is one example from last night, when I had a shutdown at 16%. After that, I've tried to power on the phone again and after some trial and error the phone went back with 16% battery left (as described by several users in this thread).
{"timestamp":"2016-12-13 22:28:46.54 -0300","bug_type":"120","os_version":"iPhone OS 10.2 (14C92)","incident_id":"848A7737-33B7-488E-B399-6331B790DEA5"}
{"bug_type":"120","os_version":"iPhone OS 10.2 (14C92)"}
Incident Identifier: 1C88D20F-70F6-4932-9AAB-B16E8FABD8B1
CrashReporter Key: 8e10166bea10ddecbc002442d4a4462aea656d36
Date: 2016-12-13 22:28:46 -0300
OS Version: iPhone OS 10.2 (14C92)
nsurlsessiond: NSURLSessionTask D522A445-B008-42BE-8588-050431C19C5BPreventUserIdleSystemSleep == 255, held for 00:00:08
nsurlsessiond: NSURLSessionTask 824CC268-B2F5-4E74-A950-26F1405D8721PreventUserIdleSystemSleep == 255, held for 00:00:08
nsurlsessiond: NSURLSessionTask CD70495D-4E5A-40F8-8D0B-3698B833F0C6PreventUserIdleSystemSleep == 255, held for 00:00:21
assertiond: <BKNewProcess: 0x100328ef0; net.whatsapp.WhatsApp; pid: 809; hostpid: -1>:809-9DFC3D9B-E0F7-48BF-A247-AD133BEB6719 [Called by UIKit, from <redacted>] [0x100305ff0]/809-849FB736-A6C7-45B4-8C27-3554572F6C99 [Called by UIKit, from <redacted>] [0x10031b180]/809-5F1BD492-31B2-4BAE-95DA-BCD282CFC69C [Called by UIKit, from <redacted>] [0x100220f20]/809-0225EB73-86F3-49A7-9127-0AE0A53D3AB9 [Called by UIKit, from <redacted>] [0x100307250]NoIdleSleepAssertion == 255, held for 00:01:06
SpringBoard: com.apple.springboard.idleNoIdleSleepAssertion == 255, held for 00:01:07
Hardware Model: N71AP
Awake Time: 07:17:47 (26266)
Standby Time: 12:07:31 (43650)
Partial Charge: 0
Capacity: 16
Voltage: 3396 mV