Nano Hash - криптовалюты, майнинг, программирование

Как подогнать модель линейной регрессии с двумя основными компонентами в R?

Допустим, у меня есть матрица данных d

pc = prcomp(d)

# pc1 and pc2 are the principal components  
pc1 = pc$rotation[,1] 
pc2 = pc$rotation[,2]

Тогда это должно соответствовать модели линейной регрессии, верно?

r = lm(y ~ pc1+pc2)

Но затем я получаю эту ошибку:

Errormodel.frame.default(formula = y ~ pc1+pc2, drop.unused.levels = TRUE) : 
   unequal dimensions('pc1')

Я предполагаю, что есть пакеты, которые делают это автоматически, но это тоже должно работать?

26.11.2009

Ответы:


1

Ответ: вам не нужна ротация pc$, это матрица вращения, а не матрица повернутых значений (оценок).

Составьте некоторые данные:

x1 = runif(100)
x2 = runif(100)
y = rnorm(2+3*x1+4*x2)
d = cbind(x1,x2)

pc = prcomp(d)
dim(pc$rotation)
## [1] 2 2

Упс. Компонент «x» — это то, что нам нужно. Из ?prcomp:

x: если «retx» равно true, возвращается значение повернутых данных (центрированные (и масштабированные, если требуется) данные, умноженные на матрицу «поворота»).

dim(pc$x)
## [1] 100   2
lm(y~pc$x[,1]+pc$x[,2])
## 
## Call:
## lm(formula = y ~ pc$x[, 1] + pc$x[, 2])

## Coefficients:
## (Intercept)    pc$x[, 1]    pc$x[, 2]  
##     0.04942      0.14272     -0.13557  
26.11.2009
  • эй, кажется, это работает, но я попробовал это в R > pc Стандартные отклонения: [1] 0,3068542 0,2650774 Вращение: PC1 PC2 x1 -0,5518651 0,8339334 x2 -0,8339334 -0,5518651 x1[1] - первый элемент x1 > x1[1 ] [1] 0,69602246 › x2[1] [1] 0,268991455 Тогда первый элемент pc$x[,1] должен быть первым элементом первой главной компоненты, верно? Так не должно ли pc$x[1,1] = pc$rotation[1,1]*x1[1]+pc$rotation[1,2]*x2[1] ? › pc$rotation[1,1]*x1[1]+pc$rotation[1,2]*x2[1] [1] -0,1597895, но на самом деле pc$x[1,1] равно: › pc$x[ 1,1] [1] 0,08993233 27.11.2009
  • Это выглядит ужасно, разве нет способа разделить строки? 27.11.2009
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..