Тест гипотезы

Вопрос или проблема

Мне нужно протестировать разницу между двумя коэффициентами (у меня есть две разные регрессии), вот как я это сделал:

car <- mtcars

first <- lm(formula = vs ~ gear + carb,
             data = car)

second <- lm(formula = vs ~ gear + disp,
             data = car)

coef_diff <- coef(first)["gear"] - coef(second)["gear"]
t.test(coef(first)["gear"], coef(second)["gear"], choice = "two.side", var.equal = TRUE)

Сообщение, которое я получил:

Ошибка в t.test.default(coef(first)["gear"], coef(second)["gear"], choice = "two.side",  : 
недостаточное количество наблюдений 

Ответ или решение

Для тестирования различий между коэффициентами двух регрессионных моделей в R есть несколько шагов, которые необходимо выполнить. Ваше начальное предложение выглядит правильно, но есть некоторые ошибки и недоразумения в вашем коде, которые нужно исправить.

Когда вы пытаетесь использовать функцию t.test для двух коэффициентов, вы не можете просто передать их как отдельные значения, так как t.test предназначен для работы с выборками, а не с одиночными значениями коэффициентов. Вместо этого вам нужно получить стандартные ошибки и использовать их для оценки статистики t.

Попробуем решить задачу корректно:

  1. Получите коэффициенты и стандартные ошибки для моделей.
  2. Определите разницу между коэффициентами.
  3. Вычислите стандартное отклонение разницы.
  4. Используйте t-статистику для проверки гипотезы.

Вот примерный код для выполнения этих шагов:

car <- mtcars

# Первая регрессионная модель
first <- lm(vs ~ gear + carb, data = car)

# Вторая регрессионная модель
second <- lm(vs ~ gear + disp, data = car)

# Получаем коэффициенты и стандартные ошибки
coef_first <- summary(first)$coefficients["gear", ]
coef_second <- summary(second)$coefficients["gear", ]

# Разница между коэффициентами
coef_diff <- coef_first[1] - coef_second[1]

# Стандартная ошибка разницы
se_diff <- sqrt(coef_first[2]^2 + coef_second[2]^2)

# Статистика t
t_stat <- coef_diff / se_diff

# Степени свободы (будем использовать простое приближение)
df <- nrow(car) - 4  # Вычитаем число параметров в обоих моделях

# p-значение
p_value <- 2 * pt(-abs(t_stat), df)

# Результаты
cat("Разница между коэффициентами:", coef_diff, "\n")
cat("Статистика t:", t_stat, "\n")
cat("p-значение:", p_value, "\n")

Объяснение кода:

  • Мы сначала создаем две регрессионные модели.
  • Далее получаем коэффициенты и стандартные ошибки для обоих регрессоров.
  • Затем вычисляем разницу между коэффициентами и стандартную ошибку этой разницы.
  • После этого мы рассчитываем t-статистику и p-значение для проверки гипотезы.

Замечания:

  • Убедитесь, что у вас достаточно наблюдений в данных, иначе вы можете столкнуться с проблемами, связанными с недостатком данных для статистического тестирования.
  • Также учитывайте, что в вашем коде используется только переменная gear, вы можете провести аналогичное вычисление для других переменных в ваших моделях.

Если у вас возникнут дополнительные вопросы или проблемы, пожалуйста, обращайтесь за помощью!

Оцените материал
Добавить комментарий

Капча загружается...