You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中为矩阵索引赋值Beta_1估计值遇报错,如何修复?

修复R代码中的系数提取错误

错误核心原因

modbeta$coefficients是lm模型返回的命名向量,不是函数,你用(X[,1])这种函数调用的语法去取值,就会触发attempt to apply non-function错误。

修复方案

1. 修正系数提取方式

有两种标准方法可以提取X[,1]对应的回归系数:

  • 直接通过向量索引取值:lm(Y~X[,1])的系数向量中,第一个元素是截距项,第二个元素就是X[,1]对应的系数,所以用modbeta$coefficients[2]
  • 使用R官方推荐的coef()函数:coef(modbeta)[2],可读性更强,是提取模型系数的标准操作

2. 优化矩阵索引赋值

你的beta_1_hat是100行的矩阵,用矩阵索引beta_1_hat[i, 1]比列表索引[[i]]更符合数据结构逻辑,避免混淆。

3. 修正标准差参数逻辑

rnorm()的sd参数需要传入标准差,你之前写的sd=sigma^2是错误的(虽然sigma=1时结果一致,但逻辑上sigma本身就是标准差,应改为sd=sigma)

完整修正代码

library(MASS)
beta_1_hat <- matrix(0, nrow=100)
for(i in seq(1,100, by=1)) {
  mu=rep(0, 3)
  Sigma=matrix(c(1,0.5,0.5,0.5,1,0.5,0.5,0.5,1),nrow=3)
  beta_0=1
  beta_1=2
  beta_2=3
  beta_3=0
  Beta=matrix(c(beta_0,beta_1,beta_2,beta_3),nrow=4)
  n=1000
  X<- mvrnorm(n , mu,Sigma)
  X_extended=cbind(rep(1,n), X)
  sigma=1
  epsilon<-matrix(rnorm(n, sd=sigma), nrow=n) # 修正sd参数
  Y<- X_extended%*%Beta+epsilon
  modbeta <- lm(Y~X[,1])
  beta_1_hat[i, 1] <- coef(modbeta)[2] # 修正系数提取与索引赋值
}
print(beta_1_hat)

内容的提问来源于stack exchange,提问作者Cole Hendrickson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 07:05:32