Як використовувати підмножину кадру даних із функцією lm() у r
Ви можете використовувати аргумент subset , щоб використовувати лише підмножину кадру даних під час використання функції lm() для підгонки регресійної моделі в R:
fit <- lm(points ~ fouls + minutes, data=df, subset=(minutes> 10 ))
Цей конкретний приклад відповідає регресійній моделі з використанням балів як змінної відповіді та натовпу та хвилин як змінних прогнозу.
Аргумент підмножини вказує, що під час встановлення регресійної моделі слід використовувати лише ті рядки у кадрі даних, у яких змінна хвилин перевищує 10.
У наступному прикладі показано, як використовувати цей синтаксис на практиці.
Приклад: як використовувати підмножину кадру даних із lm() у R
Припустимо, що ми маємо наступний кадр даних у R, який містить інформацію про зіграні хвилини, загальну кількість фолів і загальну кількість очок, набраних 10 баскетболістами:
#create data frame df <- data. frame (minutes=c(5, 10, 13, 14, 20, 22, 26, 34, 38, 40), fouls=c(5, 5, 3, 4, 2, 1, 3, 2, 1, 1), points=c(6, 8, 8, 7, 14, 10, 22, 24, 28, 30)) #view data frame df minutes fouls points 1 5 5 6 2 10 5 8 3 13 3 8 4 14 4 7 5 20 2 14 6 22 1 10 7 26 3 22 8 34 2 24 9 38 1 28 10 40 1 30
Припустімо, ми хочемо підібрати таку модель множинної лінійної регресії:
очки = β 0 + β 1 (хвилини) + β 2 (фоли)
Однак припустімо, що ми хочемо використовувати лише ті рядки у кадрі даних, де значення змінної хвилин більше 10.
Ми можемо використовувати функцію lm() з аргументом підмножини , щоб відповідати цій моделі регресії:
#fit multiple linear regression model (only for rows where minutes>10) fit <- lm(points ~ fouls + minutes, data=df, subset=(minutes> 10 )) #view model summary summary(fit) Call: lm(formula = points ~ fouls + minutes, data = df, subset = (minutes > 10)) Residuals: 3 4 5 6 7 8 9 10 1.2824 -2.5882 2.2000 -1.9118 2.3588 -1.7176 0.1824 0.1941 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -11.8353 4.9696 -2.382 0.063046 . fouls 1.8765 1.0791 1.739 0.142536 minutes 0.9941 0.1159 8.575 0.000356 *** --- Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 2.255 on 5 degrees of freedom Multiple R-squared: 0.9574, Adjusted R-squared: 0.9404 F-statistic: 56.19 on 2 and 5 DF, p-value: 0.0003744
Ми можемо використовувати функцію nobs() , щоб побачити, скільки спостережень із фрейму даних фактично було використано для відповідності моделі регресії:
#view number of observations used to fit model
nobs(fit)
[1] 8
Ми бачимо, що для підгонки моделі було використано 8 рядків кадру даних.
Якщо ми подивимося на вихідний фрейм даних, то побачимо, що рівно 8 рядків мали значення більше 10 для змінної хвилин , тобто лише ці рядки використовувалися під час підгонки регресійної моделі.
Ми також можемо використовувати оператор & в аргументі підмножини , щоб підмножити кадр даних на основі кількох умов.
Наприклад, ми можемо використати наступний синтаксис, щоб підібрати регресійну модель, використовуючи лише ті рядки у кадрі даних, де хвилини більше 10, а помилки менше 4:
#fit multiple linear regression model (only where minutes>10 & fouls<4) fit <- lm(points ~ fouls + minutes, data=df, subset=(minutes> 10 & fouls< 4 )) #view number of observations used to fit model nobs(fit) [1] 7
З результату ми бачимо, що 7 рядків кадру даних було використано для відповідності цій конкретній моделі.
Додаткові ресурси
У наступних посібниках пояснюється, як виконувати інші типові завдання в R:
Як виконати просту лінійну регресію в R
Як виконати множинну лінійну регресію в R
Як створити ділянку залишків у R