Um colega meu me enviou esse problema aparentemente fazendo rondas na internet:
If $3 = 18, 4 = 32, 5 = 50, 6 = 72, 7 = 98$, Then, $10 =$ ?
A resposta parece ser 200.
3*6
4*8
5*10
6*12
7*14
8*16
9*18
10*20=200
Quando eu faço uma regressão linear em R:
data <- data.frame(a=c(3,4,5,6,7), b=c(18,32,50,72,98))
lm1 <- lm(b~a, data=data)
new.data <- data.frame(a=c(10,20,30))
predict <- predict(lm1, newdata=new.data, interval='prediction')
Eu recebo:
fit lwr upr
1 154 127.5518 180.4482
2 354 287.0626 420.9374
3 554 444.2602 663.7398
Então, meu modelo linear está prevendo .
Quando plogo os dados, eles parecem lineares ... mas obviamente assumi algo que não está correto.
Estou tentando aprender a melhor forma de usar modelos lineares em R. Qual é a maneira correta de analisar esta série? Onde foi que eu errei?
r
regression
lm
Brett Phinney
fonte
fonte
Respostas:
Um modelo de regressão, como o ajustado por,
lm()
implica implicitamente que o processo de geração de dados subjacente é probabilístico . Você está assumindo que a regra que você está tentando modelar é determinística . Portanto, há uma incompatibilidade entre o que você está tentando fazer e a maneira como está tentando fazê-lo.Existem outros softwares (ie, não R) que são explicitamente projetados para encontrar / ajustar a função mais simples aos dados determinísticos (um exemplo seria o Eureqa ). Pode haver um pacote R para isso (que eu não conheço), mas R é destinado à modelagem estatística de dados probabilísticos.
Quanto à resposta que
lm()
lhe deu, parece razoável e pode estar certa. No entanto, reúno o contexto em que esse problema foi apresentado implicou fortemente que ele deveria ser entendido como determinístico. Se não fosse esse o caso, e você estivesse se perguntando se o ajuste era razoável, uma coisa que você pode notar é que os dois pontos extremos estão acima da linha de regressão, enquanto os dados do meio estão todos abaixo. Isso sugere uma forma funcional especificada incorretamente. Isso também pode ser visto nos resíduos versus plotagem ajustada (plot(lm1, which=1
):Quanto ao modelo ajustado por @AlexWilliams, parece muito melhor:
fonte
A tendência é quadrática, não linear. Tentar:
Atualização: Aqui está o código.
E saída:
fonte
Hesito em acrescentar às excelentes respostas dadas por Alex Williams e gung, mas há outro ponto que eu acho que deve ser feito. A pergunta usa as frases 'regressão linear' e 'modelo linear', possivelmente sugerindo que elas significam o mesmo. No entanto, o significado usual de 'regressão linear' refere-se ao Modelo de Regressão Linear Clássica (CLRM), no qual 'linear' significa 'linear nos parâmetros'. Esta é uma condição nos parâmetros, não nas variáveis independentes. Portanto, um modelo quadrático como:
fonte