Я вычисляю многомерную регрессию с нуля.У меня есть этот код:
#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()
.
Я получаю эту ошибку для «чистой» версии:
Ошибка в solve.default (t (X)% *% X): система вычислительно единственная: число взаимных условий = 3.73902e-20
Я не понимаю, что это значит!
Используя функцию lm()
, я получаю коэффициенты, но многие из них NA
.Что я мог сделать, чтобы у меня было то же решение, что и при использовании lm
даже с NA
.
Буду очень признателен за любое предложение.