简述

研究了下计算公式,简化了一下,用r语言实现了。

算法解释

  • 牛顿迭代法
    xk+1=xk−f(xk)f′(xk)x_{k+1} = x_k - \frac{f(x_k)}{f'(x_k)}xk+1​=xk​−f′(xk​)f(xk​)​
    求解的方程是
    f(x)=0f(x) = 0f(x)=0

  • 通过极大似然估计,构造对数似然方程,之后再关于α\alphaα和β\betaβ 求偏导数。之后,得到关于α\alphaα的非线性对数似然方程。然后,β\betaβ可以用α\alphaα表示。

  • 再进一步的简化(去掉无关的项,再整理相关的项)
    得到需要求解的方程为
    log(α)+digamma(α)=0log(\alpha) + digamma(\alpha) = 0log(α)+digamma(α)=0

  • 再求一下这个方程左边的导数
    1α+trigamma(α)\frac{1}{\alpha} + trigamma(\alpha)α1​+trigamma(α)

  • 初始值,使用通过矩估计得到的参数。

代码部分

除掉前面的读取数据加一行的空格,不就是小于20行咩

  • TIMES 的是迭代次数
  • 1e-5 表示的是最小的变动精度

讲真,我用这个精度,我算了4次迭代,就得到正确结果了。

library(xlsx)
ray = read.xlsx('D:/Code/R/Data in Excel/Chapter 8/gamma-arrivals.xls',1)
mean_ray = mean(ray[,1])
var_ray = var(ray[,1])alpha = mean_ray**2 / var_ray
origin_X = alpha
f = function(a){log(a)+ digamma(a)
}
ff = function(a){1. / a + trigamma(a)
}
TIMES = 10
for (i in 1:TIMES){x = origin_X -f(origin_X) / (ff(origin_X))if (abs(x -  origin_X) < 1e-5) {print(i)break} else {origin_X = x}
}
print(x)

【R语言-20行代码】牛顿迭代法求伽马函数极大似然估计法的参数估计相关推荐

  1. C语言学习之用牛顿迭代法求下面方程在1.5附近的根: 2x³-4x²+3x-6=0

    用牛顿迭代法求下面方程在1.5附近的根: 2x³-4x²+3x-6=0 在本题中 f(x) = 2x³-4x²+3x-6 可以写成以下形式:f(x) = ((2x-4)x+3)x-6 同样,f´(x) ...

  2. [R语言] 10行代码展示我国35个主要城市近一年来居民消费价格指数的变化

    前言 近年来,随着我国GDP呈现逐年增长的趋势,居民消费价格指数CPI也开始受到更多人的讨论,国家经济的发展,究竟是提高了居民的生活水平呢,还是增加了居民的生活压力呢? 接下来就让我们通过10行代码, ...

  3. 字符画君君C语言,20行代码制作字符画版小黄鸭表情包 | 文末送书抽奖结果

    点击上方"日常学python",选择"置顶公众号" 第一时间关注 Python 技术干货! 阅读文本大概需要 5 分钟. 前段时间,一只可爱的小黄鸭火起来了,据 ...

  4. 用c语言编制牛顿法程序,求解试用newton法求函数,YTU 2405: C语言习题 牛顿迭代法求根...

    2405: C语言习题 牛顿迭代法求根 时间限制: 1 Sec  内存限制: 128 MB 提交: 562  解决: 317 题目描述 用牛顿迭代法求根.方程为ax3+bx2+cx+d=0.系数a,b ...

  5. 《看聊天记录都学不会C语言?太菜了吧》(14)这么神奇?我写了20行代码竟然一行就可以搞定?

    好消息2020年4月13日晚7.30我在CSDN开播,等你来聊天 预约连接:https://live.csdn.net/room/A757291228/MJWK0Gem 本系列文章将会以通俗易懂的对话 ...

  6. 牛顿迭代法求根——C语言

    牛顿迭代法求根的原理: 设r是 的根,选取 作为r的初始近似值,过点 做曲线 的切线L,L的方程为 ,求出L与x轴交点的横坐标 ,称x1为r的一次近似值.过点 做曲线 的切线,并求该切线与x轴交点的横 ...

  7. C++牛顿迭代法求根,用递归方法实现分析及代码

    C++牛顿迭代法求根分析及代码 代码函数为y=ax^3+ bx^3+c*x+d 程序结构如上 代码为: #include <iostream> #include <cmath> ...

  8. C语言---牛顿迭代法求根

    用牛顿迭代法求下面方程在1.5附近的根:2x3-4x2+3x+6=0 先定义一个x0,通过x0找出f(x0),做f(x0)的切线,切线的交点为x1,tanx=f(x0)/x1-x0;然而切线在函数中就 ...

  9. 牛顿方法求平方根c语言,C语言之基本算法11—牛顿迭代法求平方根

    //迭代法 /* ================================================================== 题目:牛顿迭代法求a的平方根!迭代公式:Xn+1 ...

最新文章

  1. PostgreSQL-8-数据合并
  2. 第十节课-RNN介绍
  3. 如何编写YARN应用程序
  4. 计算机主机组成实验,计算机组成原理实验-运算器组成实验报告
  5. 使用JMSTester对JMS层进行基准测试
  6. ecshop category.php?id=4,categoryall.php
  7. CentOS 6.0正式版终于发布
  8. spring教程笔记4
  9. php和java访问中的一些区别
  10. OpenGL ES 简介
  11. 计算机二进制运算符,二进制布尔运算
  12. tomcat启动异常:A child container failed during start
  13. Smartbi手把手教你如何搭建企业大数据BI平台系统
  14. 怎么用电脑修改图片尺寸?图片大小尺寸修改教程
  15. RHEL7升级内核版本
  16. greenDao框架浅入深出
  17. 详解tcp/ip连接建立与释放
  18. 怎么样才能学好数学?
  19. MySQL进阶学习笔记一(未完待续)
  20. 福布斯2007中国富豪榜出炉 杨惠妍26岁成首富

热门文章

  1. AndroidApplication Fundamentals(Android应用基础)
  2. 由浅到深了解工厂模式
  3. oracle将一个表中字段的值赋值到另一个表中字段(批量)
  4. (转)SpringMVC学习(三)——SpringMVC的配置文件
  5. linux数据流重定向
  6. 快速批量导入庞大数据到SQL SERVER数据库(ADO.NET)
  7. 《IT项目管理》读书笔记(9) —— 项目沟通管理
  8. 我记录网站综合系统 -- 技术原理解析[3:我记录框架处理流程]
  9. 在.net下使用WebBrower控件时屏蔽弹出新窗口
  10. Mina2.0框架源码剖析(八)