Construct a B-spline basis with a modified difference penalty of full rank (i.e., that also penalizes low-order polynomials).

```
# S3 method for pss.smooth.spec
smooth.construct(object, data, knots)
```

object

see `smooth.construct`

. The shrinkage factor can be specified via `object$xt$shrink`

data

see `smooth.construct`

.

knots

see `smooth.construct`

.

This penalty-basis combination is useful to avoid non-identifiability issues for `ff`

terms.
See 'ts' or 'cs' in `smooth.terms`

for similar "shrinkage penalties" for thin plate and cubic regression splines.
The basic idea is to replace the k-th zero eigenvalue of the original penalty by
\(s^k \nu_m\), where \(s\) is the shrinkage factor (defaults to 0.1)
and \(\nu_m\) is the smallest non-zero eigenvalue. See reference for the
original idea, implementation follows that in the 'ts' and 'cs' constructors
(see `smooth.terms`

).

Marra, G., & Wood, S. N. (2011). Practical variable selection for generalized additive models.
*Computational Statistics & Data Analysis*, 55(7), 2372-2387.