首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从零开始的多元回归误差

从零开始的多元回归误差
EN

Stack Overflow用户
提问于 2018-06-03 01:26:13
回答 1查看 59关注 0票数 1

我从头开始计算多元回归。我有这样的代码:

代码语言:javascript
复制
#Multivariate regression 
  set.seed(18814)
  n = 200
  p = 300
  real_p=4
  X=matrix(rnorm(n*p), nrow=n, ncol=p)
  y <- apply(X[,1:real_p], 1, sum) + rnorm(n)
  data1=cbind(X,y)
  betas <- solve(t(X) %*% X)%*%t(X) %*% y

  #Using lm()
  data1=as.data.frame(data1)
  lm=lm(y~X, data = data1)
  lm$coefficients

在代码的第一部分中,我从头开始计算,然后使用lm()函数进行计算。

对于scratch版本,我得到以下错误:

solve.default(t(X) %*%X)中的错误:系统在计算上是单一的:倒数条件数= 3.73902e-20

我不明白这是什么意思!

使用lm()函数我得到了系数,但其中很多是NA的,我该怎么做才能得到与使用lm相同的解,即使是NA的。

如果有任何建议,我将非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-03 03:07:20

您必须使数据观察值的数量大于数据中的数据属性数量

执行如下所示的更改:

代码语言:javascript
复制
 set.seed(18814)
 n = 300
 p = 200
 real_p=4
 X=matrix(rnorm(n*p), nrow=n, ncol=p)
 y <- apply(X[,1:real_p], 1, sum) + rnorm(n)
 data1=cbind(X,y)
 betas <- solve(t(X) %*% X)%*%t(X) %*% y

 #Using lm()
 data1=as.data.frame(data1)
 lm=lm(y~X, data = data1)
 lm$coefficients

在上面的情况下,它不会给出误差,而且系数也不是NA值

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50659432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档