glm соответствует недопустимому первому аргументу iris, должен быть векторным (списком или атомарным)

#r

#r

Вопрос:

У меня есть следующий рабочий код

 glm.fit <- glm(Income ~ .,data=train,family=binomial) 
summary(glm.fit)
  

Однако есть несколько вопросов, которые я хочу задать, и чтобы я мог задавать вопросы, я решил попробовать воспроизвести код, используя набор данных iris.

Я пытался

  cf<-iris
 glm.fit(Petal.Width ~ ., cf, family = binomial)
  

но я получаю сообщение об ошибке

Ошибка в dim (данные) <- dim: недопустимый первый аргумент, должен быть векторным (списком или атомарным)

[Обновление]

Я вижу данные, которые я ожидаю, используя следующее

 library(dplyr)
 cf<-iris
 cf %>% head(10)
  

Комментарии:

1. можете ли вы попробовать head(cf) и проверить, что это выглядит так, как вы думаете, должно быть?

2. glm.fit принимает только x аргументы и y аргументы, а не формулу или data аргумент. Возможно, вы хотите использовать glm . Однако binomial это неправильный выбор для непрерывного результата Petal.Width . Начните с чтения ?glm .

3. Спасибо. Я обновил вопрос в ответ на эти комментарии.

Ответ №1:

В вашем коде есть некоторые проблемы.

Во-первых, нет необходимости создавать переменную cf . Вы можете просто использовать iris .

Во-вторых, glm.fit принимает в качестве первых 2 аргумента x и y . Из документации, доступной по адресу ?glm.fit :

Для glm.fit: x — проектная матрица размерности n * p, а y — вектор наблюдений длиной n.

Ваша первая строка кода используется glm для создания переменной с именем glm.fit — это не то же самое, что функция с этим именем.

Если вы хотите использовать glm , эта функция может принимать формулу и имя фрейма данных в качестве аргументов. Итак, это работает:

 glm(Petal.Width ~ ., data = iris)
  

Но это выдает ошибку:

 glm(Petal.Width ~ ., data = iris, family = binomial)
  

Ошибка в eval(family$initialize): значения y должны быть 0 <= y <= 1

Это потому, что переменная ответа Petal.Width непрерывна. Вы используете binomial семейство, когда ответ принимает 2 значения (да / нет, 0/1, истина / ложь).

Комментарии:

1. ну и дела, тогда это не лучший выбор для имени переменной.