Como usar um subconjunto de quadro de dados com a função lm() em r


Você pode usar o argumento subset para usar apenas um subconjunto de um quadro de dados ao usar a função lm() para ajustar um modelo de regressão em R:

 fit <- lm(points ~ fouls + minutes, data=df, subset=(minutes> 10 ))

Este exemplo específico corresponde a um modelo de regressão usando pontos como variável de resposta e multidões e minutos como variáveis preditoras.

O argumento subset especifica que apenas as linhas no quadro de dados onde a variável minutos é maior que 10 devem ser usadas ao ajustar o modelo de regressão.

O exemplo a seguir mostra como usar essa sintaxe na prática.

Exemplo: como usar um subconjunto de quadros de dados com lm() em R

Suponha que temos o seguinte quadro de dados em R que contém informações sobre minutos jogados, total de faltas e total de pontos marcados por 10 jogadores de basquete:

 #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

Suponha que queiramos ajustar o seguinte modelo de regressão linear múltipla:

pontos = β 0 + β 1 (minutos) + β 2 (faltas)

No entanto, suponha que queiramos usar apenas as linhas do quadro de dados onde a variável minutos é maior que 10.

Podemos usar a função lm() com o argumento subset para ajustar este modelo de regressão:

 #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

Podemos usar a função nobs() para ver quantas observações do quadro de dados foram realmente usadas para ajustar o modelo de regressão:

 #view number of observations used to fit model
nobs(fit)

[1] 8

Podemos ver que 8 linhas do quadro de dados foram usadas para ajustar o modelo.

Se olharmos para o quadro de dados original, podemos ver que exatamente 8 linhas tinham um valor maior que 10 para a variável minutos , o que significa que apenas essas linhas foram usadas no ajuste do modelo de regressão.

Também podemos usar o operador & no argumento do subconjunto para criar subconjuntos do quadro de dados com base em múltiplas condições.

Por exemplo, poderíamos usar a seguinte sintaxe para ajustar um modelo de regressão usando apenas as linhas no quadro de dados onde os minutos são maiores que 10 e as falhas são menores que 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

A partir do resultado, podemos ver que 7 linhas do quadro de dados foram usadas para ajustar este modelo específico.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns em R:

Como realizar regressão linear simples em R
Como realizar regressão linear múltipla em R
Como criar um gráfico residual em R

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *