Healy Chapter 6 Part 1

Harold Nelson

10/14/2018

library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.2.1 ──
## ✔ ggplot2 3.0.0     ✔ purrr   0.2.5
## ✔ tibble  1.4.2     ✔ dplyr   0.7.6
## ✔ tidyr   0.8.1     ✔ stringr 1.3.1
## ✔ readr   1.1.1     ✔ forcats 0.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
library(socviz)
library(gapminder)
library(MASS)
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
## 
##     select
library(olsrr)
## 
## Attaching package: 'olsrr'
## The following object is masked from 'package:MASS':
## 
##     cement
## The following object is masked from 'package:datasets':
## 
##     rivers
library(plotly)
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:MASS':
## 
##     select
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
p <- ggplot(data = gapminder,
            mapping = aes(x = log(gdpPercap), y = lifeExp)) 

In the next step, we want to see how the robust linear (rlm) compares with the standard linear model (lm). The documentation for rlm is available in the documentation for the MASS package.

It is known that outlying observations have a lot of influence on the parameters of a standard linear model. The rlm model reduces the influence of outliers.

Judgement needs to be exercised when using this model. It is likely that if the models produced by lm() and rlm() are very different, no linear model is appropriate.

p + geom_point(alpha=0.1) +
    geom_smooth(color = "tomato", fill="tomato", method = MASS::rlm) +
    geom_smooth(color = "steelblue", fill="steelblue", method = "lm")

lm1 = lm(lifeExp~log(gdpPercap),data=gapminder)
summary(lm1)
## 
## Call:
## lm(formula = lifeExp ~ log(gdpPercap), data = gapminder)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -32.778  -4.204   1.212   4.658  19.285 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     -9.1009     1.2277  -7.413 1.93e-13 ***
## log(gdpPercap)   8.4051     0.1488  56.500  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7.62 on 1702 degrees of freedom
## Multiple R-squared:  0.6522, Adjusted R-squared:  0.652 
## F-statistic:  3192 on 1 and 1702 DF,  p-value: < 2.2e-16
ols_plot_dfbetas(lm1)

The graph is hard to read because of the large number of observations. The use of observation number as the independent variable makes interpretation difficult. What does the graph look like if we sort the data by the independent variable used in the regression?

lm2 = lm(lifeExp~log(gdpPercap),
         data=arrange(gapminder,gdpPercap))
summary(lm2)
## 
## Call:
## lm(formula = lifeExp ~ log(gdpPercap), data = arrange(gapminder, 
##     gdpPercap))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -32.778  -4.204   1.212   4.658  19.285 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     -9.1009     1.2277  -7.413 1.93e-13 ***
## log(gdpPercap)   8.4051     0.1488  56.500  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7.62 on 1702 degrees of freedom
## Multiple R-squared:  0.6522, Adjusted R-squared:  0.652 
## F-statistic:  3192 on 1 and 1702 DF,  p-value: < 2.2e-16
ols_plot_dfbetas(lm2)

This suggests that we “dummy out” the countries with a high gdpPercap. We acknowledge that these countries don’t lie on the basic linear relationship and actually measure the difference.

gapminder = mutate(gapminder,
                   high = gdpPercap >= 60000,low = gdpPercap < 1000)
lm3 = lm(lifeExp~log(gdpPercap) + high + low,
         data=arrange(gapminder,gdpPercap))
summary(lm3)
## 
## Call:
## lm(formula = lifeExp ~ log(gdpPercap) + high + low, data = arrange(gapminder, 
##     gdpPercap))
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -29.5098  -4.1330   0.8991   4.5175  19.4912 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -11.3940     1.7566  -6.487 1.15e-10 ***
## log(gdpPercap)   8.6842     0.2033  42.707  < 2e-16 ***
## highTRUE       -27.3724     3.4057  -8.037 1.70e-15 ***
## lowTRUE          0.4657     0.6173   0.754    0.451    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7.483 on 1700 degrees of freedom
## Multiple R-squared:  0.665,  Adjusted R-squared:  0.6644 
## F-statistic:  1125 on 3 and 1700 DF,  p-value: < 2.2e-16
ols_plot_dfbetas(lm3)

It appears that countries with a low value of lifeExp are influential. We can look at gapminder in a View window to identify the outliers and possibly explain them.

Another technique we could use is to add the values of dfbeta from the basic model, lm1, to the raw dataframe and conduct a more systematic investigation.

p = ols_plot_dffits(lm1)

dbetas = p$plot$data$dbetas
summary(dbetas)
##       Min.    1st Qu.     Median       Mean    3rd Qu.       Max. 
## -0.3098873 -0.0172102  0.0051892 -0.0005854  0.0186278  0.1299062
gpmaug = cbind(gapminder,dbetas)
glimpse(gpmaug)
## Observations: 1,704
## Variables: 9
## $ country   <fct> Afghanistan, Afghanistan, Afghanistan, Afghanistan, ...
## $ continent <fct> Asia, Asia, Asia, Asia, Asia, Asia, Asia, Asia, Asia...
## $ year      <int> 1952, 1957, 1962, 1967, 1972, 1977, 1982, 1987, 1992...
## $ lifeExp   <dbl> 28.801, 30.332, 31.997, 34.020, 36.088, 38.438, 39.8...
## $ pop       <int> 8425333, 9240934, 10267083, 11537966, 13079460, 1488...
## $ gdpPercap <dbl> 779.4453, 820.8530, 853.1007, 836.1971, 739.9811, 78...
## $ high      <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FAL...
## $ low       <lgl> TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE...
## $ dbetas    <dbl> -0.090365287, -0.083135158, -0.075376365, -0.0653074...

Exercise

How is the variable dbetas related to the other variables? Look at continent and year, maybe country.

gpmaug %>% ggplot(aes(x=factor(year),y=dbetas)) + geom_boxplot()

gpmaug %>% ggplot(aes(x=factor(continent),y=dbetas)) + geom_boxplot()

gpmaug %>% arrange(dbetas) -> dbsort  
  View(dbsort)

Exercise

How is dbetas related to the other continuous variables?

Answer

The only continuous variable is pop. We can look at the possible relationship with a scatterplot, a correlation coefficient and a linear model. The log of pop should be considered since the values of pop have a wide range.

summary(gpmaug$pop)
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
## 6.001e+04 2.794e+06 7.024e+06 2.960e+07 1.959e+07 1.319e+09
max(gpmaug$pop)/min(gpmaug$pop)
## [1] 21974.02
p = gpmaug %>% ggplot(aes(x=pop,y=dbetas,group=country)) + geom_point()
ggplotly(p)
# The use of group = country made the country name appear in the tooltip provided by ggplotly().

Let’s create lpop.

gpmaug$lpop = log10(gpmaug$pop)
pl = gpmaug %>% ggplot(aes(x=lpop,y=dbetas,group=country)) + geom_point()
ggplotly(pl)

Exercise

Repeat this exercise using the dataset mpg in the ggplot2 package. Run the basic regression hwy ~ displ. Then create the augmented dataset and see what you can say about the influential observations.

Answer

lma = lm(hwy~displ,data = mpg)
pa = ols_plot_dffits(lma)

dbetas = pa$plot$data$dbetas
summary(dbetas)
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
## -0.169486 -0.049852 -0.004995  0.009065  0.045670  0.687147
mpgaug = cbind(mpg,dbetas)
glimpse(mpgaug)
## Observations: 234
## Variables: 12
## $ manufacturer <chr> "audi", "audi", "audi", "audi", "audi", "audi", "...
## $ model        <chr> "a4", "a4", "a4", "a4", "a4", "a4", "a4", "a4 qua...
## $ displ        <dbl> 1.8, 1.8, 2.0, 2.0, 2.8, 2.8, 3.1, 1.8, 1.8, 2.0,...
## $ year         <int> 1999, 1999, 2008, 2008, 1999, 1999, 2008, 1999, 1...
## $ cyl          <int> 4, 4, 4, 4, 6, 6, 6, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6...
## $ trans        <chr> "auto(l5)", "manual(m5)", "manual(m6)", "auto(av)...
## $ drv          <chr> "f", "f", "f", "f", "f", "f", "f", "4", "4", "4",...
## $ cty          <int> 18, 21, 20, 21, 16, 18, 18, 18, 16, 20, 19, 15, 1...
## $ hwy          <int> 29, 29, 31, 30, 26, 26, 27, 26, 25, 28, 27, 25, 2...
## $ fl           <chr> "p", "p", "p", "p", "p", "p", "p", "p", "p", "p",...
## $ class        <chr> "compact", "compact", "compact", "compact", "comp...
## $ dbetas       <dbl> -0.009650847, -0.009650847, 0.061655487, 0.035549...

Healy’s Comparisons

Back to the main topic! Let’s look at the splines model.

Here’s Healy’s graph.

p + geom_point(alpha=0.1) +
    geom_smooth(color = "tomato", method = "lm", size = 1.2, 
                formula = y ~ splines::bs(x, 3), se = FALSE)

Exercise

Add the simple linear model for comparison.

p + geom_point(alpha=0.1) +
    geom_smooth(color = "tomato", method = "lm", size = 1.2, 
                formula = y ~ splines::bs(x, 3), se = FALSE) +
  geom_smooth(color = "steelblue", fill="steelblue", method = "lm")

Exercise

Compare the splines model with a simple third degree polynomial model in x.

Answer

p + geom_point(alpha=0.1) +
    geom_smooth(color = "tomato", method = "lm", size = 3, 
                formula = y ~ splines::bs(x, 3), se = FALSE) +
  geom_smooth(color = "steelblue", fill="steelblue", method = "lm",
              formula = y ~ poly(x,3))

Quantile Regression

p + geom_point(alpha=0.1) +
    geom_quantile(color = "tomato", size = 1.2, method = "rqss",
                  lambda = 1, quantiles = c(0.20, 0.5, 0.85))
## Loading required package: SparseM
## 
## Attaching package: 'SparseM'
## The following object is masked from 'package:base':
## 
##     backsolve
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)

Exercise

Repeat this, but add the simple linear model and restrict the quantile to use only the 50th percentile.

p + geom_point(alpha=0.1) +
    geom_quantile(color = "tomato", size = 1.2, method = "rqss",
                  lambda = 1, quantiles = 0.5) +
  geom_smooth(color = "steelblue", fill="steelblue", method = "lm",
              formula = y~x)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)
## Smoothing formula not specified. Using: y ~ qss(x, lambda = 1)