Показать сообщение отдельно
Старый 11.11.2012, 22:15   #50
Hogfather
Platinum Member
 
Аватар для Hogfather
 
Регистрация: 22.07.2010
Адрес: Санкт-Петербург
Сообщений: 3,304
По умолчанию

"Пора кончать этот бардак. Давайте её откопаем"


Как говорится. не только методом максимального правдоподобия славен R. Ту же задачу можно попробовать решить нелинейным методом наименьших квадратов. Для этого построим кумулятивную (интегральную) функцию распределения и попробуем подогнать понравившегося нам Пуассона. В общем, сделаем примерно то, что пытался проделать Дмитрий В. в Excel.
Код:
> # Понеслась!
> # Строим кумулятивную функцию
> MyEcdf<-ecdf(LT)
># Делаем таблицу (фрейм) для аппроксимации
># Обратите внимание, поскольку я все взял в скобки, результат отображается сразу на экране
> (dfecdf <- data.frame(knots=knots(MyEcdf),Fn=MyEcdf(1:22)))
   knots           Fn
1      1 0.0001726552
2      2 0.0052947609
3      3 0.0598346346
4      4 0.1643869780
5      5 0.2903102039
6      6 0.4254417097
7      7 0.5696663917
8      8 0.7053158632
9      9 0.8131294723
10    10 0.8901720797
11    11 0.9389951465
12    12 0.9676559173
13    13 0.9840389817
14    14 0.9920194909
15    15 0.9961248489
16    16 0.9984652867
17    17 0.9994820343
18    18 0.9997889769
19    19 0.9999232643
20    20 0.9999616322
21    21 0.9999808161
22    22 1.0000000000

> # Строим модель

> mdl<-nls( Fn ~ ppois(knots,lambda), data=dfecdf,model=T)
Предупреждение
In nls(Fn ~ ppois(knots, lambda), data = dfecdf, model = T) :
  Для некоторых параметров не указаны стартовые значения.
Инициализую ‘lambda’ до '1.'.
Укажите 'start' или я использую модель 'selfStart'

> # Информация о модели
> summary(mdl)

Formula: Fn ~ ppois(knots, lambda)

Parameters:
       Estimate Std. Error t value Pr(>|t|)    
lambda  7.16774    0.01924   372.5   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.006275 on 21 degrees of freedom

Number of iterations to convergence: 5 
Achieved convergence tolerance: 3.776e-08
Посчитаем адекватность полученной модели.

Код:
> # Расчет адекватности модели
> (RSS.p <- sum(residuals(mdl)^2))
[1] 0.000826937
> (TSS <- sum((dfecdf$Fn - mean(dfecdf$Fn))^2))
[1] 2.981961

> # коэффициент детерминации
> 1 - (RSS.p/TSS)
[1] 0.9997227
Что мы имеем с гуся. А с гуся имеем чуть другую лямбду (7.16774) и коэффициент детерминации практически единицу.
Для лямбды можно посчитать доверительный интервал
Код:
> confint(mdl)
Waiting for profiling to be done...
    2.5%    97.5% 
7.127763 7.207781
Графически ошибки модели можно изобразить вот так.
Код:
> plot(residuals(mdl),main="Ошибки модели")
> abline(0,0)

Последний раз редактировалось Hogfather; 11.11.2012 в 23:13. Причина: Ошибся
---------
DNF is not an option
Hogfather вне форума   Ответить с цитированием
Реклама