Nichtlineare Regression, Klassifikation und Machine Learning - Übung 1
From StatWiki
Contents |
Crane, Protractor and River
Gegeben ist ein rechtwinkeliges Dreieck mit
- Hypothenuse ist 21m lang
- Die Messung der Länge der senkrechten Kante ist
- Die Messung des Winkels
Gesucht ist
- Model
- Compute linear approximation
- Results of linear approximation for various
(Hinweis:
sind gute Startpunkte)
- Picture of expectation curve
- Formula and picture of
- Autofahrt überlegen
- Bonus:
finden (Hinweis: Minimum von
unter Verwendung von numerischen Methoden; z.b. Bisektion)
Alternative Lösungen
- Anja Steindl media:Scanauftrag anja 070608.pdf
- Johanna Bertl media:Johanna Bertl crane.pdf (Laut Jan die beste Erklärung für
)
Model
Assertion:
Linear Approximation
Linear approximation of
:
(it's a number)
Results of linear approximation for various starting points
Measurement 1 in Degree:
Linear approximations
y = c(.47, 14.94)
options(warn = -1)
library(circular)
lin.approx = function(theta0) {
eta = function(theta0) c(theta0, 21 * sin(theta0))
d.eta = function(theta0) c(1, 21 * cos(theta0))
y.star = y - eta(theta0) + d.eta(theta0) * theta0
# eta star in degree
c(deg((d.eta(theta0) %*% d.eta(theta0))^-1 * d.eta(theta0) %*% y.star))
}
deg(0.47)
lin.approx(0.47)
lin.approx(asin(14.94/21))
lin.approx(rad(45))
#[1] 26.92902[1] 43.49673 [1] 45.26707 [1] 45.26702
Picture of expectation curve
pdf(rpdf,width=12)
drawPiAxis = function() {
at=seq(0,2,length.out=9)
# needed for fractions
library(MASS)
# attr needed to get e.g. 1/2 instead of 0.5
axis(1, at=at*pi, labels=sapply(attr(fractions(at),"fracs"), function(x) parse(text=paste(x, "* pi", sep=""))))
}
eta=function(theta) c(theta, 21 * sin(theta))
plot(t(sapply(seq(0,2*pi,length.out=1000), eta)),
main="Expectation Surface",
xlab=expression(y[1]), ylab=expression(y[2]),
type="l",
axes=F)
drawPiAxis()
axis(2, c(-21,-15,-10,-5,0,5,10,15,21))
text(pi/8, 15, expression( eta(theta) : theta %in% (list(0, pi/2)) ))
#
Formula and picture of curvature
Intrinsic curvature
Parameter effect curvature
where
the orthogonal project is.
Interpretationist die Inverse des Radius jenes Kreises, der sich an der Stelle
optimal an die Funktion
anpasst. Je grösser der Radius des besser kann linear approxmiert werden.
gibt das Ausmass der Änderung von
an, wenn
geändert wird. Hier sind 2 Fälle zu unterscheiden 1.
heisst, dass die Abstände zwischen aufeinander folgenden Punkten
konstant ist. 2.
heisst, dass die Abstände zwischen aufeinander folgenden Punkten
unterschiedlich sind. Das ist der schwierigere Fall.
Projector![]()
pdf(rpdf,width=12) x=seq(0,2*pi,length.out=1000) kint = function(x) (21^2 * abs(sin(x)))/(1 + (21*cos(x))^2)^(3/2) plot(x, kint(x),type="l",axes=F,xlab=expression(theta),ylab=expression(K[int](theta)),main="Intrinsic Curvature") drawPiAxis() axis(2) #
pdf(rpdf,width=12) x=seq(0,2*pi,length.out=1000) kpar = function(x) (21^2 * abs(sin(x)) * abs(cos(x)))/(1 + (21*cos(x))^2)^(3/2) plot(x, kpar(x),type="l",axes=F,xlab=expression(theta),ylab=expression(K[int](theta)),main="Parameter Effect Curvature") drawPiAxis() axis(2) #
Autofahrt überlegen
The parameter effect curvature represents a measure of change of the intrinsic curvature.
pdf(rpdf,width=12,height=12)
par(mfrow=c(3,1))
plot(t(sapply(seq(0,2*pi,length.out=1000), eta)),
main="Expectation Surface",
xlab=expression(y[1]), ylab=expression(y[2]),
type="l",
axes=F)
drawPiAxis()
axis(2, c(-21,-15,-10,-5,0,5,10,15,21))
x=seq(0,2*pi,length.out=1000)
plot(x, kint(x),type="l",axes=F,xlab=expression(theta),ylab=expression(K[int](theta)),main="Intrinsic Curvature")
drawPiAxis()
axis(2)
plot(x, kpar(x),type="l",axes=F,xlab=expression(theta),ylab=expression(K[int](theta)),main="Parameter Effect Curvature")
drawPiAxis()
axis(2)
#
Minimum von S(.) finden (Bonus)
Minimum durch
<Axiom echo="true"> D((y[1] - x)^2 + (y[2] - 21 * sin(x))^2, x) </Axiom>
pdf(rpdf) s = function(x) (.47 - x)^2 + (14.94 - 21*sin(x))^2 x=seq(0,pi/2,length.out=1000) plot(x, s(x),type="l",axes=F,xlab=expression(theta),ylab=expression(S(theta)),main="S") drawPiAxis() axis(2) #
pdf(rpdf) s.derived = function(x) 21*21 *cos(x) *sin(x) - 21 * 14.94 * cos(x) + x - .47 x=seq(0,pi/2,length.out=1000) plot(x, s.derived(x),type="l",axes=F,xlab=expression(theta),ylab=expression(partialdiff * S(theta)/partialdiff * theta),main="Derivate of S") drawPiAxis() axis(2) abline(h=0,col=2) #
Find
and get
options(warn=-1) library(circular) deg(uniroot(s.derived, c(0,pi/2))$root) #
[1] 45.26732
Alternative
and get
options(warn=-1) library(circular) deg(optimise(s, c(0,pi/2), maximum=F)$minimum) #
[1] 45.26724
ist die Inverse des Radius jenes Kreises, der sich an der Stelle
optimal an die Funktion
anpasst.
Je grösser der Radius des besser kann linear approxmiert werden.
gibt das Ausmass der Änderung von
heisst, dass die Abstände zwischen aufeinander folgenden Punkten
konstant ist.
2.
heisst, dass die Abstände zwischen aufeinander folgenden Punkten
