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...
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)
How is dbetas related to the other continuous variables?
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)
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.
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...
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)
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")
Compare the splines model with a simple third degree polynomial model in x.
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))
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)
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)