Monday, July 11, 2011 12:03:33 AM
Раз уж речь зашла про R, необходимо упомянуть соответствующую IDE -- RStudio. Рекомендую!
ПС Иначе приходится копипастиить команды в текстовый файл и держать его под рукой, чтобы позднее повторить вызов особо зубодробительной команды.
Thursday, July 07, 2011 11:58:57 PM
Нелинейная регрессия в R не допускает фиттинга точных данных из-за особенностей реализации на числах с ограниченной точностью. Выкрутиться можно введением минимального искуственного шума:
- x<- -4:10
- y<- x^2
- plot(x, y)
- lmfit1<-lm(y~x) // линейная регрессия
- par(mfrow=c(2,2)) // 4 графика на лист
- plot(lmfit1)
- par(mfrow=c(1,1))
- fitted(lmfit1)
- lines(x, lmfit1$fitted.values, col="red") // НЕВЕРНАЯ линейная регрессия
- y[2]<-y[2]+0.001 // ИСКУСТВЕННОЕ(!) внедрение шума в данные
- nlfit2<- nls(y~a*x^2 + b, control = list(maxiter = 500))
- nlfit2 // Здесь четко и ясно будут написаны коэффициенты a, b
- fitted(nlfit2)
- lines(x, fitted(nlfit2), col="green")
Короче: несмотря на отвратительный GUI, R рулит.
Saturday, January 17, 2009 12:24:20 AM
Задача генерации случайной последовательности, которая имеет заданный нетривиальный закон распределения, возникает постоянно. Например, если необходимо выполнять моделирование развития каких-то случайных процессов во времени. Обычно мы можем оценить различные статистические характеристики моделируемого процесса на основании эмпирической выборки. Чаще всего нам не везёт и получившиеся оценки весьма далеки от аналитически разработанных распределений. В такой ситуации функция плотности вероятности может быть апроксимирована: полиномами, кусочно-линейной, ступенчатой или параметрической. Коль скоро это сделано, необходимо генерировать последовательность случайных чисел, которая подчиняется данному закону распределения.
В статье projecteuclid.org/euclid.aos/1056562461 детально и вполне доступно изложен достаточно общий метод Slice Sampling. Имеется его подробное разъяснение для одномерной выборки. Этого текста вполне достаточно для реализации алгоритма на языке высокого уровня типа C#.
Thursday, January 15, 2009 8:20:38 AM
Мера Лебега допускает апроксимацию методом Монтекарло, поэтому многомерные интегралов можно оценивать с помощью генерации последовательности случайных чисел.
Обычно при реализации на компьютере мы используем псевдолучайные последовательности. Однако существуют строгие теоремы, которые позволяют строить более эффективные оценки для меры. В частности это low descrepance sequences.
В итоге время вычислений сокращается в 20-50-100 раз.
en.wikipedia.org/wiki/Discrepancy_of_a_sequence#Discrepancy
www-rocq.inria.fr/mathfi/Premia/Premia8_FreeVersion/doc/pdf_html/mc_quasi_doc/index.html
Реализация алгоритма генерации:
parallel.bas.bg/~emanouil/sequences.html
www.multires.caltech.edu/software/libseq/
Псевдокод для получения последовательности Гальтона:
orion.math.iastate.edu/reu/2001/voronoi/halton_sequence.html