||
这是一个描述女性身高和体重的数据,我们以height为X变量(自变量),以weight为Y变量(因变量),进行模型的计算。
计算方法参考:https://stats.idre.ucla.edu/r/library/r-library-matrices-and-matrix-computations-in-r/
data(women)
head(women)
X <- as.matrix(cbind(1, women$height))
n <- dim(X)[1]
p <- dim(X)[2]
head(X)
y <- matrix(women$weight,,1)
head(y)
第一种方法,是直接根据公式计算:
beta.hat <- solve(t(X) %*% X) %*% t(X) %*% y
beta.hat
第二种方法,是用crossprod函数,在计算大数据时有优势
beta.hat1 <- solve(crossprod(X), crossprod(X,y)) # solve(A,B) == solve(A)%*%B
beta.hat1
y.hat <- X %*% beta.hat
round(y.hat[1:5, 1],3) # 拟合值
y[1:5, 1] #原始值
plot(y.hat,y)
residual <- y - y.hat
head(residual)
sigma2 <- sum((y - y.hat)^2)/(n - p)
sigma2
v <- solve(t(X) %*% X) * sigma2
v
#standard errors of the parameter estimates
sqrt(diag(v))
t.values <- beta.hat/sqrt(diag(v))
t.values
2 * (1 - pt(abs(t.values), n - p))
mod <- lm(weight ~ height,data=women)
summary(mod)$coef
beta.hat
head(fitted(mod))
head(y.hat)
head(residuals(mod))
head(residual)
summary(mod)
sigma2
2.32564102564103
sqrt(sigma2)
1.52500525429948
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-21 10:14
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社