R Power Fit с NLS отличается от Excel - PullRequest
2 голосов
/ 11 февраля 2012

У меня есть набор данных (ниже) со степенным соотношением. (Y = aX ^ b)

Подгонка мощности в Excel и xmgrace дала мне почти идентичные значения для подгонки. (R ^ 2 от 0,993) Y = 215,47 X ^ 0,812

Однако, когда я пытаюсь использовать функцию R nls (), я получаю другое значение. Плюс это не вычисляет R ^ 2, потому что это не является статистически обоснованным.

Однако, если я беру логарифмы, я могу сделать lm () и получить R ^ 2 0,993. Как я могу воспроизвести значения excel и xmgrace, произведенные с подгонкой мощности, используя R..Is R nls () не правильно ??

Drift Time  Mass_Independent CS
2.32    407.3417277
2.32    419.1267553
2.81    503.9859708
2.92    501.0465281
3.78    640.9024985
4.00    688.7906761
4.48    776.3958584
5.67    918.9991003
6.05    949.4448047
6.86    993.9763311
6.86    1064.539603
6.97    1041.422648
7.94    1112.407393
8.42    1183.070416
9.23    1302.622263
9.29    1291.525748

1 Ответ

4 голосов
/ 11 февраля 2012

Я думаю, что было бы глупо полагать, что оценка Excel превышает оценку R. Недостатки Excel в области регрессии являются давними и хорошо документированы:

 nls(Mass_Ind_CS ~a*Drift_Time^b , dat, start=list(a=100, b=1))
#---------------------
Nonlinear regression model
  model:  Mass_Ind_CS ~ a * Drift_Time^b 
   data:  dat 
       a        b 
227.0176   0.7828 
 residual sum-of-squares: 10224

Number of iterations to convergence: 5 
Achieved convergence tolerance: 3.617e-06 
#---------------------
 plot(dat, xlim=range(dat$Drift_Time), ylim=range(dat$Mass_Ind_CS) )
 par(new=T)
 curve(215.47*x^0.812, from=min(dat$Drift_Time), 
                        to=max(dat$Drift_Time),
                         ylim=range(dat$Mass_Ind_CS) )
 par(new=T)
 curve(227.0176*x^0.7828, from=min(dat$Drift_Time), 
                          to=max(dat$Drift_Time), 
                          ylim=range(dat$Mass_Ind_CS),col="red")

Оценка R показана красным цветом. Это показывает, что вы ошибаетесь в том, чтобы сосредоточиться на оценке параметра, не глядя на прогнозы в диапазоне значений x =. Не существует реальной R-sq для оценки для отдельных нелинейных моделей, хотя вы можете сделать сравнение моделей с anova(). Вы можете найти причины для автора nls (Дуглас Бейтс) , а не , включая их, потому что это практически FAQ в списке рассылки r-help.

enter image description here

...