Ajustando um modelo exponencial aos dados


21

Eu tenho 2 variáveis, ambas da classe "numérico":

> head(y)
[1] 0.4651804 0.6185849 0.3766175 0.5489810 0.3695258 0.4002567

> head(x)
[1] 59.32820 68.46436 80.76974 132.90824 216.75995 153.25551

Plotei-os e agora gostaria de ajustar um modelo exponencial aos dados (e adicioná-lo ao gráfico), mas não consigo encontrar nenhuma informação sobre o ajuste de modelos para dados multivariados no R! Somente para unificar dados, alguém pode ajudar? Nem sei por onde começar ... Obrigado!


6
Isso é um pouco confuso. Você diz que tem duas variáveis ​​"independentes" (eu prefiro "preditor", mas isso não é importante). Você tem alguma variável "dependente" / "resposta"? Se essas foram variáveis ​​de resposta, posso imaginar o ajuste de uma distribuição de probabilidade paramétrica e bivariada (com ou sem variáveis ​​preditoras das quais os parâmetros da distribuição dependiam) - ou uma estimativa de densidade de kernel 2D. Talvez você possa explicar um pouco mais o contexto. (PS quem está upvoting a questão deve saber o que isso significa ... o cuidado que qualquer um carrilhão em?)
Ben Bolker

De qualquer forma, é melhor você acessar crossvalidated.com para obter essas perguntas. ou para um site obscuro chamado Google. Ele encontrou informações sobre o ajuste de modelos para dados multivariados. Bastante (4.230.000 para ser exato)
Joris Meys

Eu recomendaria o Bing - afinal, é um mecanismo de decisão, os mecanismos de pesquisa são do século 20 ... basta olhar para o Yahoo e Ask Jeeves, como são irrelevantes hoje?!?
Perseguição

Ben Bolker @ - Obrigado por ajudar, eu tirei o independente, porque não estava correto. O que eu tenho é a distância entre os locais (x) e correlações de chuvas entre locais (y)

note que você terá que usar métodos especiais se quiser fazer inferências estatísticas sobre esses dados, porque se as distâncias foram calculadas em um conjunto comum de locais, elas não são independentes - pesquise, por exemplo, "Teste de Mantel"
Ben Bolker

Respostas:


20

Não tenho muita certeza do que você está perguntando, porque sua linguagem está errada. Mas, supondo que suas variáveis ​​não sejam independentes umas das outras (se fossem, não haverá relação a encontrar), tentarei. Se xé sua variável independente (ou preditora) e ysua variável dependente (ou resposta), isso deve funcionar.

# generate data
beta <- 0.05
n <- 100
temp <- data.frame(y = exp(beta * seq(n)) + rnorm(n), x = seq(n))

# plot data
plot(temp$x, temp$y)

# fit non-linear model
mod <- nls(y ~ exp(a + b * x), data = temp, start = list(a = 0, b = 0))

# add fitted curve
lines(temp$x, predict(mod, list(x = temp$x)))

obrigado pela sua resposta, retirei a palavra "independente", como você apontou, não fazia sentido. Usando seu código para meus dados, eu posso ajustar o modelo, mas o resultado são dezenas de linhas no gráfico, em vez de apenas uma. Alguma idéia do porquê?

@sbg - Não, desculpe, não consigo pensar em uma razão para isso. Cabe nls()um modelo?
precisa

Acho que sim, obtenho: Modelo de modelo de regressão não linear: y ~ exp (a + b * x) dados: DF ab -0,535834 -0,002024 soma dos quadrados residuais: 18,62 Número de iterações para convergência: 6 Tolerância de convergência alcançada: 8,08 e-06

3
@sbg tente classificar sua xvariável:lines(sort(temp$x),predict(mod, list(x=sort(temp$x)))
Ben Bolker 15/06
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.