R语言入门——验证多元回归的参数估计的无偏性
Posted 统计学小王子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言入门——验证多元回归的参数估计的无偏性相关的知识,希望对你有一定的参考价值。
引言
多元回归最小二乘估计具有无偏性,本文使用R语言产生随机数对其进行验证。
正文
因为代码思路比较简单,下面直接贴代码:
# 生成数据的函数
getData <- function(n = 200, p = 3, Beta = rep(1, p)){
library(MASS)
x <- mvrnorm(n, rep(0, p), diag(rep(1, p)))
names(x) <- paste0('x', 1:p)
y <- x %*% Beta + rnorm(n, 0, 0.5)
Data <- data.frame(y = y, x)
Data
}
head(getData())
# 模拟回归100次数
N <- 100 # 模拟次数
n <- 200 # 数据观测数目
p <- 3 # 数据维度
Beta <- rep(1, p)
Betas <- c()
for(i in 1:N){
Data <- getData(n = n, p = p, Beta = Beta)
Betas <- rbind(Betas, coef(lm(y ~ ., data = Data)))
}
apply(Betas, 2, mean) # 参数的均值
apply(Betas, 2, sd) # 参数的标准差
运行结果及其分析
> # 生成数据的函数
> getData <- function(n = 200, p = 3, Beta = rep(1, p)){
+ library(MASS)
+ x <- mvrnorm(n, rep(0, p), diag(rep(1, p)))
+ names(x) <- paste0('x', 1:p)
+ y <- x %*% Beta + rnorm(n, 0, 0.5)
+ Data <- data.frame(y = y, x)
+ Data
+ }
> head(getData())
y X1 X2 X3
1 0.7932604 0.48820965 -0.01480737 -0.3723186
2 -0.9680377 0.14235156 -1.99860809 0.7086567
3 0.3621666 0.06698623 1.61645079 -1.3548245
4 -0.9179620 -0.23171607 -0.67800670 -0.8005901
5 -1.9953379 -0.13448550 -1.66061661 -0.5242462
6 -2.4101698 -0.71158736 -1.01674407 -0.2235694
>
> # 模拟回归100次数
> N <- 100 # 模拟次数
> n <- 200 # 数据观测数目
> p <- 3 # 数据维度
> Beta <- rep(1, p)
> Betas <- c()
> for(i in 1:N){
+ Data <- getData(n = n, p = p, Beta = Beta)
+ Betas <- rbind(Betas, coef(lm(y ~ ., data = Data)))
+ }
> apply(Betas, 2, mean) # 参数的均值
(Intercept) X1 X2 X3
-0.005987145 0.999723174 0.999818314 1.000606621
> apply(Betas, 2, sd) # 参数的标准差
(Intercept) X1 X2 X3
0.03155636 0.03464782 0.03645126 0.03499957
>
可以看出100次模拟的均值和真实值比较接近。
总结
希望可以帮助大家提高R水平。
水平有限发现错误还望及时评论区指正,您的意见和批评是我不断前进的动力。
以上是关于R语言入门——验证多元回归的参数估计的无偏性的主要内容,如果未能解决你的问题,请参考以下文章