For stats collection we cannot define ideal frequency because it depends on data changes. When data changes in table is more then 10% then it is advisble to collect stats.
you can write a bteq script to check the data variationon the bsis of audit cols and as per new record count wit respect to old data count (can be figure out using last stat collection date) you can take decision in script whether you need to collect stats again or not.
You can see DBQL which lets you specify thresholds for CPU time, IO etc. for which to log detailed stats in DBQLogTbl. Values below the specified threshold are summarized and put into DBQLSummaryTbl, conserving space. But DBQL does not gives detailed stats for Node, VProcs etc. instead it gives stats per queries or the users, application, client that ran them.