-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathCode1.R
48 lines (36 loc) · 854 Bytes
/
Code1.R
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
g = 9.8
n = 25
ti = seq(0, 3.4, len=n)
f = 56.67 + 0*ti -0.5*g*ti^2
y = f + rnorm(n , sd=1)
plot(ti, y, xlab="time in secs", ylab="Distance in meters")
lines(ti, f, col=2)
rss = function(beta0, beta1, beta2)
{
r = y - (beta0 + beta1*ti + beta2*ti^2)
sum(r^2)
}
beta2s = seq(-10, 0, len=100)
RSS = sapply(beta2s, rss, beta0 = 55, beta1 = 0)
plot(beta2s, RSS, type="l")
RSS = sapply(beta2s, rss, beta0 = 65, beta1 = 0)
lines(beta2s, RSS, type="l",col=3)
ti2 = ti^2
fit = lm(y~ti + ti2)
summary(fit)
X = cbind(1, ti, ti^2)
head(X)
Beta = matrix(c(55, 0, 5), 3, 1)
Beta
r = y - X %*% Beta
# RSS = t(r) %*% r
RSS = crossprod(r)
# = rss(55,0, 5)
RSS
# betahat = solve(t(X) %*% X) %*% t(X) %*% y
# similar to fit...
betahat = solve(crossprod(X)) %*% crossprod(X, y)
QR = qr(X)
Q = qr.Q(QR)
R = qr.R(QR)
betahat = backsolve(R, crossprod(Q,y))