Как рассчитать P-значение F-статистики в R


F-тест дает F-статистику.Чтобы найти значение p, связанное с F-статистикой в R, вы можете использовать следующую команду:

pf(fstat, df1, df2, нижний.хвост = ЛОЖЬ)

  • fstat – значение f-статистики
  • df1 – степени свободы 1
  • df2 – степени свободы 2
  • lower.tail — следует ли возвращать вероятность, связанную с нижним хвостом F-распределения. Это ИСТИНА по умолчанию.

Например, вот как найти значение p, связанное с F-статистикой, равной 5, со степенями свободы 1 = 3 и степенями свободы 2 = 14:

pf(5, 3, 14, lower.tail = FALSE)

#[1] 0.01457807

Одним из наиболее распространенных применений F-теста является проверка общей значимости регрессионной модели.В следующем примере показано, как рассчитать p-значение F-статистики для регрессионной модели.

Пример: расчет p-значения из F-статистики

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

#create dataset
data <- data.frame(study_hours = c(3, 7, 16, 14, 12, 7, 4, 19, 4, 8, 8, 3),
 **prep_exams = c(2, 6, 5, 2, 7, 4, 4, 2, 8, 4, 1, 3),
 **final_score = c(76, 88, 96, 90, 98, 80, 86, 89, 68, 75, 72, 76))
#view first six rows of dataset
head(data)

# study_hours prep_exams final_score
#1 3 2 76
#2 7 6 88
#3 16 5 96
#4 14 2 90
#5 12 7 98
#6 7 4 80

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

#fit regression model
model <- lm(final_score ~ study_hours + prep_exams, data = data)

#view output of the model
summary(model)

#Call:
#lm(formula = final_score ~ study_hours + prep_exams, data = data)
#
#Residuals:
# Min 1Q Median 3Q Max 
#-13.128 -5.319 2.168 3.458 9.341 
#
#Coefficients:
# Estimate Std. Error t value Pr(>|t|) 
#(Intercept) 66.990 6.211 10.785 1.9e-06 \*\*\*
#study_hours 1.300 0.417 3.117 0.0124 \* 
#prep_exams 1.117 1.025 1.090 0.3041 
#---
#Signif. codes: 0 '\*\*\*' 0.001 '\*\*' 0.01 '\*' 0.05 '.' 0.1 ' ' 1
#
#Residual standard error: 7.327 on 9 degrees of freedom
#Multiple R-squared: 0.5308, Adjusted R-squared: 0.4265 
#F-statistic: 5.091 on 2 and 9 DF, p-value: 0.0332

В самой последней строке вывода мы видим, что F-статистика для общей регрессионной модели равна 5,091.Эта F-статистика имеет 2 степени свободы для числителя и 9 степеней свободы для знаменателя. R автоматически вычисляет, что p-значение для этой F-статистики равно 0,0332 .

Чтобы вычислить это эквивалентное p-значение самостоятельно, мы могли бы использовать следующий код:

pf(5.091, 2, 9, lower.tail = FALSE)

#[1] 0.0331947

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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.