Многомерная регрессия с нуля - PullRequest
0 голосов
/ 02 июня 2018

Я вычисляю многомерную регрессию с нуля.У меня есть этот код:

#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.

Буду очень признателен за любое предложение.

1 Ответ

0 голосов
/ 02 июня 2018

Вы должны сохранить количество наблюдений данных больше, чем количество атрибутов данных в данных

сделать изменения, как показано ниже:

 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...