```
package Math::LOESS::Model;
# ABSTRACT: Math::LOESS model configurations
use 5.010;
use strict;
use warnings;
our $VERSION = '0.0000_02'; # TRIAL VERSION
use Math::LOESS::_swig;
use Type::Params qw(compile_named);
use Types::Standard qw(ArrayRef Enum Object);
sub new {
my $class = shift;
state $check = compile_named( _obj => Object );
my $arg = $check->(@_);
return bless( $arg, $class );
}
sub _obj { $_[0]->{_obj} };
for my $attr (qw(span degree normalize)) {
no strict 'refs';
*{$attr} = sub {
my ($self, $value) = @_;
if (defined $value) {
$self->_obj->{$attr} = $value;
}
return $self->_obj->{$attr};
};
}
sub family {
my ($self, $value) = @_;
if (defined $value) {
state $check = Type::Params::compile(Enum[qw(gaussian symmetric)]);
($value) = $check->($value);
$self->_obj->{family} = $value;
}
return $self->_obj->{family};
}
for my $attr (qw(parametric drop_square)) {
no strict 'refs';
*{$attr} = sub {
my ($self, $value) = @_;
if (defined $value) {
$self->_obj->{$attr} = $value;
}
return $self->_obj->{$attr};
};
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Math::LOESS::Model - Math::LOESS model configurations
=head1 VERSION
version 0.0001
=head1 DESCRIPTION
You normally don't need to construct object of this class yourself.
Instead you get the object from an L<Math::LOESS> object.
=head1 NAME
Math::LOESS::Model - Math::LOESS model configurations
=head1 VERSION
version 0.0000_02
=head1 ATTRIBUTES
=head2 span
The parameter controls the degree of smoothing. Default is 0.75.
For C<span> < 1, the neighbourhood used for the fit includes proportion
C<span> of the points, and these have tricubic weighting (proportional to
C<(1 - (dist/maxdist)^3)^3)>. For C<span> > 1, all points are used, with
the "maximum distance" assumed to be C<span^(1/p)> times the actual
maximum distance for p explanatory variables.
=head2 degree
The degree of the polynomials to be used, normally 1 or 2. Default is 2.
=head2 parametric
Should any terms be fitted globally rather than locally? Default is false.
Terms can be specified by name, number or as a logical vector of the same
length as the number of predictors.
=head2 drop_square
For fits with more than one predictor and degree = 2, should the quadratic
term be dropped for particular predictors? Default is false.
Terms are specified in the same way as for parametric.
=head2 normalize
Should the predictors be normalized to a common scale if there is more
than one? The normalization used is to set the 10% trimmed standard
deviation to one. Set to false for spatial coordinate predictors and
others known to be on a common scale.
=head2 family
If C<"gaussian"> fitting is by least-squares, and if C<"symmetric"> a
re-descending M estimator is used with Tukey's biweight function.
=head1 SEE ALSO
L<Math::LOESS>
=head1 AUTHOR
Stephan Loyd <sloyd@cpan.org>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2019 by Stephan Loyd.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=head1 AUTHOR
Stephan Loyd <sloyd@cpan.org>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2019 by Stephan Loyd.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut
```