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
Обратите внимание, что мы получаем тот же ответ (но с большим количеством отображаемых десятичных знаков), что и вывод линейной регрессии выше.