PH525x series - Exercises - Line

2019-11-26  本文已影响0人  3between7

本篇文章是PH525x series课程中Linear models and randomness的练习章节,下面是我自己做的答案,emmmmm,不保证对。

Q1:

 g = 9.8 
 h0 = 56.67
 v0 = 0
 n = 25
 tt = seq(0,3.4,len=n) 
 y = h0 + v0 *tt - 0.5* g*tt^2 + rnorm(n,sd=1)

在自由落体问题中,圆球距离地面的高度y的计算公式为y = h_0 + v_0*tt - 0.5 * g *tt^2 + rnorm(n,sd=1),假如我们不知道h_0v_0-0.5*g的具体值,就需要通过线性回归的方法进行评估:
Y_i = \beta_0 + \beta_1 X_i + \beta_2{t^2} + \varepsilon_i, i=1,\dots,n
注意g = -2\beta_2,那么如果在R中通过如下代码计算LSE

n = 25
tt = seq(0,3.4,len=n) 
X <- cbind(1,tt,tt^2)
A <- solve(crossprod(X))%*%t(X) 

那么如下哪个选项是gLSE

根据公式\hat \beta = (X^TX)^{-1}X^TY可知,该题在计算\hat \beta时少乘了一个Y,通过正确的计算公式会得到3个\beta值,分别对应着\beta_0\beta_1\beta_2,而题目中已给出提示:g = -2\beta_2,所以应该选择C


Q2:

上述代码使用了rnorm()函数生成随机误差,这就意味着每重复一次代码,g的评估值就会不同。现在要求使用replicate()函数重复运行上述代码100,000次,每次均计算g的估计值。那么这个估计值的标准误是多少?

首先,一个估计值的标准误其实就是该估计值采样分布的标准差。所以,在R中我们可以:

n = 25
tt = seq(0,3.4,len=n) 
X <- cbind(1,tt,tt^2)

calg <- function(X){
  Y <- h0 + v0 *tt - 0.5* g*tt^2 + rnorm(n,sd=1)
  lse <- solve(crossprod(X))%*%t(X)%*%Y
  -2*lse[3]
}
rep <- replicate(100000,calg(X))
head(rep)
#[1] 10.441920 10.126645  9.555041 10.085362  9.385787  9.878968

sd(rep)
#[1] 0.4297456

所以g估计值的标准误是0.4297456


Q3:

如果假设父与子身高数据是完整的群体数据,现在我们分别从父亲与儿子群体中随机采50个样,并重复10,000次,那么斜率估计值的标准误是多少?

 library(UsingR)
 x = father.son$fheight
 y = father.son$sheight
 n = length(y)
 N = 50

coef <- function(dat){
  index = sample(n,N)
  sampledat = dat[index,]
  x = sampledat$fheight
  y = sampledat$sheight
  lm(y~x)$coef
} 

rep <- replicate(10000,coef(father.son))
sd(rep)
#[1] 17.65376

所以答案是17.65376


Q4:

假设X = x_1,\cdots,x_nY = y_1,\cdots,y_n,那么XY的协方差定义如下:

mean( (Y-\bar Y)*(X-\bar X))
那么,下列哪个选项与父与子身高的协方差最接近?

 library(UsingR)
 x = father.son$fheight
 y = father.son$sheight
covar <- mean((y-mean(y))*(x-mean(x))) 
print(covar)
#[1] 3.869739

所以答案应该选择C

上一篇下一篇

猜你喜欢

热点阅读