-
Notifications
You must be signed in to change notification settings - Fork 230
/
45-confidence-interval-around-polynomial-curve-fitting.Rmd
93 lines (59 loc) · 2.45 KB
/
45-confidence-interval-around-polynomial-curve-fitting.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
---
title: "Polynomial curve fitting and confidence interval"
descriptionMeta: "Build a scatterplot with a polynomial curve and its confidence interval drawn on top of it. Base R code provided."
descriptionTop: "This example follows the previous [scatterplot with polynomial curve](44-polynomial-curve-fitting.html). It extends this example, adding a confidence interval."
sectionText: "Scatter section"
sectionLink: "scatterplot.html"
DataToVizText: "Data to Viz"
DataToVizLink: "data-to-viz.com/graph/scatter.html"
url: "45-confidence-interval-around-polynomial-curve-fitting"
output:
html_document:
self_contained: false
mathjax: default
lib_dir: libs
template: template_rgg.html
css: style.css
toc: TRUE
toc_float: TRUE
toc_depth: 2
df_print: "paged"
---
```{r global options, include = FALSE}
knitr::opts_chunk$set( warning=FALSE, message=FALSE)
```
<div class="container" style="padding-top: 100px">
<div class = "row">
<div class = "col-md-6 col-sm-12 align-self-center">
This example follows the previous [chart #44](44-polynomial-curve-fitting.html) that explained how to add polynomial curve on top of a [scatterplot](scatterplot.html) in base R.
Here, a confidence interval is added using the `polygon()` function.
</div>
<div class = "col-md-6 col-sm-12">
```{r thecode, echo=FALSE, out.width = "100%", fig.height=7}
# We create 2 vectors x and y. It is a polynomial function.
x <- runif(300, min=-30, max=30)
y <- -1.2*x^3 + 1.1 * x^2 - x + 10 + rnorm(length(x),0,100*abs(x))
# Basic plot of x and y :
plot(x,y,col=rgb(0.4,0.4,0.8,0.6), pch=16 , cex=1.3 , xlab="" , ylab="")
# Can we find a polynome that fit this function ?
model <- lm(y ~ x + I(x^2) + I(x^3))
# I can get the features of this model :
#summary(model)
#model$coefficients
#summary(model)$adj.r.squared
#For each value of x, I can get the value of y estimated by the model, and the confidence interval around this value.
myPredict <- predict( model , interval="predict" )
#Finally, I can add it to the plot using the line and the polygon function with transparency.
ix <- sort(x,index.return=T)$ix
lines(x[ix], myPredict[ix , 1], col=2, lwd=2 )
polygon(c(rev(x[ix]), x[ix]), c(rev(myPredict[ ix,3]), myPredict[ ix,2]), col = rgb(0.7,0.7,0.7,0.4) , border = NA)
```
</div>
</div>
```{r thecode, eval=FALSE}
```
<!-- Close container -->
</div>
```{r, echo=FALSE}
htmltools::includeHTML("htmlChunkRelatedCorrelation.html")
```