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

Как я могу использовать модель lmRob с факторами для прогнозирования нового значения?

Я подгоняю многомерную модель с lmRob в пакете robust, и мне нравится подгонка. Как я могу использовать подгонку, чтобы сделать прогноз в данной точке? Хакерское решение состоит в том, чтобы построить его и разместить горизонтальные и вертикальные линии на графике, чтобы точно определить

Как я могу передать модели точку и заставить ее выдать прогноз? Я представляю, что это что-то вроде:

predict(model, newdata = data.frame(x = 2, y = 90))

Но это дает мне ошибку:

predict(model, newdata = data.frame(x = 2, y = 90))
Error in `contrasts<-`(`*tmp*`, value = contrasts.arg[[nn]]) : 
  contrasts apply only to factors

traceback() это:

> traceback()
7: stop("contrasts apply only to factors")
6: `contrasts<-`(`*tmp*`, value = contrasts.arg[[nn]])
5: model.matrix.default(delete.response(Terms), newdata, contrasts = object$contrasts, 
       xlevels = attr(object, "xlevels"))
4: model.matrix(delete.response(Terms), newdata, contrasts = object$contrasts, 
       xlevels = attr(object, "xlevels"))
3: predict.lmRob(model, newdata = data.frame(x = 1, 
       y = 90), interval = "predict")
2: predict(model, newdata = data.frame(x = 1, y = 90), 
       interval = "predict")
1: predict(model, newdata = data.frame(x = 1, y = 90), 
       interval = "predict")

Если я просто попытаюсь передать исходный набор данных в predict, я получу:

Error in x %*% coefs : non-conformable arguments

Добавление соответствующих уровней фактора устраняет первое предупреждение, но оставляет второе.

10.08.2015

  • ?predict.lmRob в соответствии с этим вам понадобится только predict.lmRob(model, newdata = data.frame(x = 2, y = 90)) 10.08.2015
  • Имена и типы переменных во фрейме данных, который вы используете в predict(), должны точно совпадать с теми, которые вы использовали в исходном вызове lmRob(). Я не могу сказать, не видя ваших данных, но, может быть, это источник вашей проблемы? 10.08.2015
  • @ulfelder: Мой x - это фактор, так что это может быть одной из проблем. Но когда я пытаюсь передать исходный набор данных в newdata (например, predict(model, newdata = d), я получаю Error in x %*% coefs : non-conformable arguments, поэтому я не думаю, что он единственный. 10.08.2015

Ответы:


1

Вы должны убедиться, что newdata имеет те же уровни, что и оригинал, т.е.

dat <- data.frame(x=1:10, y=factor(sample(letters[1:2], 10, rep=T)),
                  z=runif(10))
fit <- lmRob(z ~ ., data=dat)

## Fails, wrong factor
predict(fit, newdata=data.frame(x=11, y="a")) 

## Works
predict(fit, newdata=data.frame(x=11, y=factor("a", levels=letters[1:2])))

Редактировать

Вы получите вторую ошибку, если сделаете что-то подобное

dat <- data.frame(x=1:10, y=factor(sample(letters[1:2], 10, rep=T), levels=letters[1:3]),
                  z=runif(10))  # data has empty "c" level
fit <- lmRob(z ~ ., data=dat)

## Fails
predict(fit, newdata=dat)

## Works
predict(fit, newdata=droplevels(dat))
10.08.2015
  • Спасибо, использование факторов устранило первую ошибку. А как насчет второй ошибки non-conformable аргументов? 10.08.2015
  • @wdkrnls есть ли у вас пустые уровни в ваших исходных данных (т.е. есть уровень без фактических данных)? 11.08.2015
  • Да. Установка уровней, удаляющих пустой, дает мне прогноз. 11.08.2015
  • Новые материалы

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

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

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

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

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

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

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