Here's an update on why I think it's just a matter of better starting values. Below is a made-up dataset that matches all of the summary statistics you gave and gives almost identical results. (I've compacted the dataset to take up much less space than listing out all of the elements. That's why it looks so odd.) But then using different starting values than what you used gives the correct results.
But more importantly: you should follow Andy's advice about using logistic regression and not worrying about less-than-perfect detection for this dataset. And I'd argue you want to use all of the sites for studying occupancy but just the sites with at least one detection to study the probability of detection using logistic regression. If you choose to continue with
occu, then trying multiple starting values would be essential and settling on the starting values giving you the smallest AIC value. It appears that while the detection probability for an individual visit is low, you have typically 35 visits to each site and the probability of at least one detection in 35 visits is very close to 1.
y = matrix(c(1,1,1,1,1,rep(0,29),NA,1,1,1,1,1,rep(0,29),NA,1,1,1,1,rep(0,30),NA,
rep(c(rep(0,34),NA),32),rep(c(1,1,rep(0,33)), 64),1,rep(0,34),1,rep(0,34),1,
rep(0,1609)), nrow=147, byrow=TRUE)
ufo = unmarkedFrameOccu(y = y)
summary(ufo)
# unmarkedFrame Object
#
# 147 sites
# Maximum number of observations per site: 35
# Mean number of observations per site: 34.76
# Sites with at least one detection: 70
#
# Tabulation of y observations:
# 0 1 <NA>
# 4965 145 35
occu(~1 ~1, ufo, start=c(1,0))
# Call:
# occu(formula = ~1 ~ 1, data = ufo, starts = c(1, 0))
#
# Occupancy:
# Estimate SE z P(>|z|)
# 20.8 1712 0.0122 0.99
#
# Detection:
# Estimate SE z P(>|z|)
# -3.53 0.0842 -41.9 0
#
# AIC: 1322.89
So the results match up pretty well with what you presented. However, using different starting values gives one more reasonable (and I think correct) results:
occu(~1 ~1, ufo, start=c(0.3,-3))
# Call:
# occu(formula = ~1 ~ 1, data = ufo, starts = c(0.3, -3))
#
# Occupancy:
# Estimate SE z P(>|z|)
# 0.316 0.225 1.4 0.16
#
# Detection:
# Estimate SE z P(>|z|)
# -2.97 0.108 -27.5 2.34e-166
#
# AIC: 1286.282
(
The moral is anytime you use a program dependent on iterative methods, be prepared to give reasonable (or multiple) starting values. (This advice doesn't just apply to occu.)