-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
Estls <- function(X, Y) {
M <- cbind(X, Y)
lambda <- tail(eigen(t(M) %% M)$values, 1)
sigma2.hat <- lambda / n
Delta.hat <- (t(X) %% X - lambda * diag(m)) / n
## beta.hat for the tls regression for adjusted X and Y with equal variance
beta.hat <- as.vector(solve(t(X) %% X - lambda * diag(m)) %% t(X) %% Y)
## [I|beta.hat]
I.b <- cbind(diag(m), beta.hat)
## var.hat for beta.hat
Var.hat <- sigma2.hat * (1 + sum(beta.hat^2)) *
(solve(Delta.hat) + sigma2.hat * solve(Delta.hat) %%
solve(I.b %% t(I.b)) %% solve(Delta.hat)) / n
list(beta.hat = beta.hat, Var.hat = Var.hat)
}
- invese of delta.hat is used in beta.hat
- inverse of delta is used multiple times in Var.hat; so it makes sense to store it.
- solve(I.b %*% t(I.b)) could be done with Woodbury's formula (more efficient for large m)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels