Ao ajustar uma curva, como calculo o intervalo de confiança de 95% para meus parâmetros ajustados?

12

Estou ajustando curvas aos meus dados para extrair um parâmetro. No entanto, não tenho certeza sobre qual é a certeza desse parâmetro e como calcularia / expressaria seu intervalo de confiança de %.95

Digamos que, para um conjunto de dados contendo dados que decaem exponencialmente, ajuste uma curva a cada conjunto de dados. Então a informação que eu quero extrair é o expoente . Conheço os valores de o valor de que não estou interessado (é uma variável que vem da população, não o processo que estou tentando modelar).bta

Uso regressão não linear para ajustar esses parâmetros. No entanto, não sei como calcular o intervalo de confiança de % para qualquer método, portanto respostas mais amplas também são bem-vindas.95

f=aebt
dados de exemplo e ajuste

Depois de obter meu valor para , como calculo o intervalo de confiança de %? Desde já, obrigado!b95

Leo
fonte
Como você ajusta os dados? Sua função é transformada para se ajustar a um OLS?
johnny
Vejo pelos seus comentários nas respostas que você está realmente fazendo mínimos quadrados não lineares. Você teria boas respostas mais rapidamente se tivesse começado com essas informações. Eu adicionei pelo menos uma tag relevante.
Glen_b -Reinstate Monica
@Glen_b Ah, vou ser mais completo no futuro e adicioná-lo à pergunta. Eu pensei no entanto. Com alguns conjuntos de dados eu uso a distância absoluta L1 e outras vezes ainda uso a regressão linear. Então, eu esperava obter uma resposta ampla.
Leo
Se você deseja respostas para mínimos quadrados, regressão L1 e mínimos quadrados não lineares, seria melhor ser explícito sobre isso.
Glen_b -Reinstala Monica

Respostas:

10

O problema de linearizar e depois usar a regressão linear é que a suposição de uma distribuição gaussiana de resíduos provavelmente não é verdadeira para os dados transformados.

Geralmente é melhor usar regressão não linear. A maioria dos programas de regressão não linear informa o erro padrão e o intervalo de confiança dos parâmetros de melhor ajuste. Se a sua não, essas equações podem ajudar.

Cada erro padrão é calculado usando esta equação:

SE(Pi) = sqrt[ (SS/DF) * Cov(i,i) ]

  • Pi: i-ésimo parâmetro ajustável (não constante)
  • SS: soma dos resíduos quadráticos
  • DF: graus de liberdade (o número de pontos de dados menos o número de parâmetros ajustados por regressão)
  • Cov (i, i): i-ésimo elemento diagonal da matriz de covariância
  • sqrt (): raiz quadrada

E aqui está a equação para calcular o intervalo de confiança para cada parâmetro a partir do valor de melhor ajuste, seu erro padrão e o número de graus de liberdade.

From [BestFit(Pi)- t(95%,DF)*SE(Pi)]  TO  [BestFit(Pi)+
 t(95%,DF)*SE(Pi)] 
  • BestFit (Pi) é o melhor valor de ajuste para o i-ésimo parâmetro
  • t é o valor da distribuição t para 95% de confiança para o número especificado de DF.
  • DF é graus de liberdade.

    Exemplo com o Excel para 95% de confiança (portanto, alfa = 0,05) e 23 graus de liberdade: = TINV (0,05,23) DF é igual a graus de liberdade (o número de pontos de dados menos o número de parâmetros ajustados por regressão)

Harvey Motulsky
fonte
Isso é exatamente o que eu precisava, obrigado! Eu usei lsqcurvefit no Matlab , ele não gera o intervalo de confiança ou erro padrão. Fornece os multiplicadores de Lagrange (?), Os resíduos e a norma quadrática 2 dos resíduos. Agora, com isso e sua resposta, posso calcular o que preciso!
Leo
3

Se acredita que um modelo apropriado para seus dados é:

f=aebt

Em seguida, você pode fazer um log transformar seus dados de resposta, de modo que um modelo apropriado seja:

f=abt

com e . Os dados transformados podem ser ajustados usando regressão linear simples e uma estimativa para a interceptação e inclinação, juntamente com os erros padrão obtidos. Se o valor te crítico e o erro padrão forem aplicados à estimativa de parâmetro, um intervalo de confiança para essa estimativa de parâmetro poderá ser formado. Em R:f=ln(f)a=ln(a)

# Rough simulated data set.
set.seed(1)
a <- 50; b <- 0.2; n <- 25
x <- 1:n
y <- a*(exp(-b * x))
y <- y + rnorm(n, sd=0.25)
y <- ifelse(y>0, y, 0.1)
plot(x,y)

# Linearise:
y2 <- log(y)
plot(x,y2)

# Fit model to transformed data
model <- lm(y2 ~ x)
summary(model)
confint(model)

# Or:
param <- summary(model)$coefficients[, 1]; se <- summary(model)$coefficients[, 2]
param + qt(0.975, 23) * se
param - qt(0.975, 23) * se

Se você estiver usando o modelo para prever, verifique se as suposições da SLR foram atendidas - iid . N(0,σ2)

t-student
fonte
Ah obrigado! Uma resposta muito agradável e completa! Isso eu posso usar se fizer um ajuste linearizado, o que às vezes também faço. Espero que você não se importe de aceitar a resposta de Harveys, pois, neste caso, minha pergunta não era sobre o ajuste linearizado. Ainda é uma resposta útil!
Leo