Existe uma maneira fácil em R criar uma regressão linear sobre um modelo com 100 parâmetros em R? Digamos que temos um vetor Y com 10 valores e um quadro de dados X com 10 colunas e 100 linhas. Em notação matemática, eu escreveria Y = X[[1]] + X[[2]] + ... + X[[100]]
. Como escrevo algo semelhante na sintaxe R?
22
Respostas:
Tente isto
fonte
y ~ . + .^2
. E assim por diante.y ~ . + .:x1
você obterá as interações de cada variável (excetox1
) comx1
. E assim por diante; Você entendeu a ideia.Ótimas respostas!
Eu acrescentaria que, por padrão, chamar
formula
umdata.frame
cria uma fórmula aditiva para regredir a primeira coluna para as outras.Então, no caso da resposta de @ danas.zuokas você pode até fazer
que é interpretado corretamente.
fonte
R
operadores 's são :)Se cada linha é uma observação e cada coluna é um preditor, de modo que é um vetor de comprimento e é uma matriz ( nesse caso), você pode fazer isso comn X n × p p = 100Y n X n×p p=100
Se houver outras colunas que você não deseja incluir como preditores, será necessário removê-las
X
antes de usar esse truque ou usar-
a fórmula do modelo para excluí-las. Por exemplo, se você quiser excluir o 67º preditor (que tem o nome correspondentex67
), poderá escreverAlém disso, se você deseja incluir interações, etc., precisará adicioná-las manualmente como (por exemplo)
ou verifique se eles foram inseridos como colunas de
X
.fonte
Você também pode usar uma combinação das funções
formula
epaste
.Dados de configuração : Vamos imaginar que temos um data.frame que contém as variáveis de previsão
x1
parax100
e nossa variável dependentey
, mas que há também uma variável incômodoasdfasdf
. Além disso, as variáveis preditoras são organizadas em uma ordem para que não sejam todas contíguas no data.frame.Imagine também que você tenha uma sequência contendo os nomes das variáveis preditoras. Nesse caso, isso pode ser criado facilmente usando a
paste
função, mas em outras situações,grep
ou alguma outra abordagem pode ser usada para obter essa sequência.Aplicar abordagem : podemos então construir uma fórmula da seguinte maneira:
collapse
argumento é inserido+
entre as variáveis preditorasformula
converte a string em um objeto de fórmula de classe adequado para alm
função.De maneira mais geral, uso a função a seguir com bastante regularidade quando quero fornecer as variáveis preditoras como vetor de nomes de variáveis.
Por exemplo,
fonte
do.call
avaliação da fórmula antes de chamarlm
.