我必须用R运行模拟。
基本上我必须在矩阵nXp中创建一组变量( X ),其中第一个变量的值为1,其他23个变量具有从N中随机提取的随机值(0, 1)。 长度为24的向量 beta ,其前2个值为1,其余为0。 长度为24的向量 epsilon ,它是从N(0,1)中提取的。 之后我创建了一个变量 y ,它是: y = X%*%beta + epsilon 。 然后我选择 X 的变量,其中包含max(cor(abs( Xj,y )))其中j从(3,24)开始,我必须运行模型 y~X1 + X2 + Xj 并查看结果。
> set.seed(123)
>
> n=25 p=24 b=seq(1,1000)
>
> X <- cbind(matrix(1,nrow=25,ncol=1),matrix(rnorm(25*23),nrow=25,
> ncol=23)) beta <- t(t(c(1,1,rep(0,22)))) eps <- t(t(rnorm(25)))
>
> y <- X %*% beta + eps
>
> j<-seq(3,24) m <- which.max(abs(cor(X[,j],y)))
>
> newX <- as.data.frame(cbind(y,X[,1], X[,2], X[,m+2])) anyNA(newX[,2])
> mod <- lm(V1 ~ . , data=newX)
> summary(mod)
Call: lm(formula = V1 ~ ., data = newX)
Residuals:
Min 1Q Median 3Q Max
-1.42575 -0.90957 0.06547 0.38879 2.39707
Coefficients: (1 not defined because of singularities)
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.1235 0.2421 4.641 0.000126 ***
V2 NA NA NA NA
V3 0.6803 0.2775 2.452 0.022612 *
V4 -0.5943 0.3036 -1.957 0.063101 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.085 on 22 degrees of freedom Multiple R-squared: 0.3958,
Adjusted R-squared: 0.3408 F-statistic: 7.205 on 2 and 22 DF, p-value: 0.003919
一切正常,但正如你可以看到 V2 的估计系数,那就是变量 X1 的系数,它由1组成,是NA。 我不明白为什么我有NA作为结果,变量中的值被列为数字,并且没有缺失值。
如果有人能帮助我理解,谢谢!