The trouble with using the ACF is that there can be other reasons for significant spikes, not just seasonality. So it is indicative but cannot be conclusive.
If the data had a small seasonal period (such as 4 for quarterly data or 12 for monthly data) then a simple approach is to use the ets
function in the forecast
package for R. If there is a seasonal pattern, it will choose a seasonal model.
But since your data are weekly (according to the comments in the answer from Mark T Patterson), that won't work because the seasonal period is too long, and because it is non-integer. X12 also won't help you (as suggested by @toomuchpj) as it is only designed for quarterly and monthly data.
The non-integer period will be a problem for any solution that assumes period=52, because the difference between 52 and 365/7 will become apparent with long series.
One approach is to use the tbats
model, also in the forecast
package in R. It will handle weekly seasonality and will automatically determine if a seasonal pattern is present. For example:
x <- ts(data, frequency=365/7)
fit <- tbats(x)
seasonal <- !is.null(fit$seasonal)
Then seasonal
will be TRUE
if a seasonal model is chosen and otherwise FALSE
.