R for LC+cohort

#导入美国数据
USA.mortality<-read.csv("/Users/liuqing/Downloads/死亡率数据库/美国/美国死亡率1950-2017.csv",header=TRUE)
USA.population<-read.csv("/Users/liuqing/Downloads/死亡率数据库/美国/美国人数1950-2017.csv",header=TRUE)
USA.deathpopulation<-read.csv("/Users/liuqing/Downloads/死亡率数据库/美国/美国死亡人数1950-2017.csv",header=TRUE)
USA.gdp<-read.csv("/Users/liuqing/Downloads/死亡率数据库/美国/女性/美国人均gdp.csv",head=TRUE)#1960-2018
m_all<-matrix(rep(0,100*68),100,68)   #死亡率
lnm_all<-matrix(rep(0,100*68),100,68) #ln死亡率
D_all<-matrix(rep(0,100*68),100,68)   #计算的死亡人数
E_all<-matrix(rep(0,100*68),100,68)   #总人数
d_all<-matrix(rep(0,100*68),100,68)   #实际观测的死亡人数
#女性1950-2017年的所有数据
for (t in 1:68){for(x in 1:100){E_all[x,t]<-USA.population[x+100*(t-1),3];   #总人数,100行,68列m_all[x,t]<-USA.mortality[x+100*(t-1),3];    #女性死亡率D_all[x,t]<-USA.deathpopulation[x+100*(t-1),3] #实际观测的死亡人数lnm_all[x,t]<-log(m_all[x,t]);}
}
#用于实验的数据
E<-E_all[,1:63] #1950-2012
m<-m_all[,1:63] #1950-2012
lnm<-lnm_all[,1:63]
m_original<-lnm_all[,64:68]#用于预测的死亡率
y<-D_all[,1:63]#实际观测到的死亡人数
#添加age-period-cohort
a<-c(rep(0,100))
b0<-c(rep(1,100))
b1<-c(rep(1,100))
k<-c(rep(0,63))
l<-c(rep(0,162))
#1.1 估计的死亡率
mm<-function(a,b0,b1,k,l){m_hat<-matrix(rep(0,100*63),100,63)for(t in 1950:2012){for(x in 0:99){for(z in 1851:2012){if(z==t-x){m_hat[x+1,t-1949]<-exp(a[x+1]+b0[x+1]*k[t-1949]+b1[x+1]*l[t-x-1850])}}}}return(m_hat)
}
#1.2 估计的死亡人数
yy<-function(a,b0,b1,k,l){y_hat<-matrix(rep(0,100*63),100,63)E<-E_all[,1:63]for(x in 1:100){for(t in 1:63){y_hat[x,t]<-E[x,t]*m_hat[x,t]      #估计的死亡人数}}return(y_hat)
}#1.3 似然函数的值
RSS<-function(a,b0,b1,k,l){L<-matrix(rep(NA,100*63),100,63)y_hat<-yy(a,b0,b1,k,l)m_hat<-mm(a,b0,b1,k,l)for(x in 1:100){for(t in 1:63){L[x,t]<-2*(y[x,t]*log(y[x,t]/y_hat[x,t])-(y[x,t]-y_hat[x,t]))}}suml<-sum(L)return(suml)
}#2.1 alpha
aa<-function(a,b0,b1,k,l){y_hat<-yy(a,b0,b1,k,l)for(x in 1:100){a[x]<-a[x]+sum(y[x,]-y_hat[x,])/(sum(y_hat[x,]))}return(a)
}#2.2 kt
kk<-function(a,b0,b1,k,l){y_hat<-yy(a,b0,b1,k,l)for(t in 1:63){k[t]<-k[t]+sum((y[,t]-y_hat[,t])*b1)/(sum(y_hat[,t]*(b1^2)))}return(k)
}#2.3 beta(1)
bb1<-function(a,b0,b1,k,l){y_hat<-yy(a,b0,b1,k,l)for(x in 1:100){b1[x]<-b1[x]+sum((y[x,]-y_hat[x,])*k)/(sum(y_hat[x,]*(k^2)))}return(b1)
}#2.4 cohort
ll<-function(a,b0,b1,k,l){y_hat<-yy(a,b0,b1,k,l) for(x in 0:99){           #最后对x循环for(z in 1851:2012){    #再对z循环for(t in 1950:2012){  #先对t循环if(t-x==z){l[z-1850]<-l[z-1850]+sum((y[x+1,t-1949]-y_hat[x+1,t-1949])*b0[x+1])/(sum(y_hat[x+1,t-1949]*(b0[x+1]^2)))}}}}return(l)
}#2.5
bb0<-function(a,b0,b1,k,l){y_hat<-yy(a,b0,b1,k,l)for( x in 0:99){for(t in 1950:2012){for(z in 1851:2012){if(z==t-x){b0[x+1]<-b0[x+1]+sum((y[x+1,t-1949]-y_hat[x+1,t-1949])*l[t-x-1850])/sum(y_hat[x+1,t-1949]*(l[t-x-1850])^2)}}return(b0)}}
}
#3
j=1
diff_L<-RSS(a,b0,b1,k,l)
while(abs(diff_L)>10^(-10))
{logL0<-RSS(a,b0,b1,k,l)if(j%%5==1){a<-aa(a,b0,b1,k,l)}if(j%%5==2){k<-kk(a,b0,b1,k,l)}if(j%%5==3){b0<-bb0(a,b0,b1,k,l)}if(j%%5==4){b1<-bb1(a,b0,b1,k,l)}if(j%%5==0){l<-ll(a,b0,b1,k,l)}logL1<-RSS(a,b0,b1,k,l)diff_L<-logL1-logL0j=j+1
}

R for LC+cohort相关推荐

  1. hdu-3071 Gcd Lcm game---质因数分解+状态压缩+线段树

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3071 题目大意: 给定一个长度为n的序列m次操作,操作的种类一共有三种 查询 L :查询一个区间的所 ...

  2. BZOJ1251: 序列终结者

    [传送门:BZOJ1251] 简要题意: 给出一个长度为n的序列,有m个操作,3种操作: 1 l r k将l到r的数增加k 2 l r将l到r的数列翻转 3 l r求出l到r的最大值 题解: 裸SPL ...

  3. 【GDKOI2016Day1T1-魔卡少女】【拆位】线段树维护区间内所有连续子区间的异或和...

    题意:给出N个数,M个操作.操作有修改和询问两种,每次修改将一个数改成另一个数,每次询问一个区间的所有连续子区间的异或和.n,m<=100000,ai<=1000 题解: 当年(其实也就是 ...

  4. 【BZOJ】3339: Rmq Problem 3585: mex(线段树+特殊的技巧)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3585 好神的题. 但是!!!!!!!!!!!!!!我线段树现在要开8倍空间才能过!!!!!!!!!! ...

  5. bzoj2243 [SDOI2011]染色

    树链剖分,线段树维护三个值:区间颜色数.区间左端颜色.区间右端颜色,当左区间右端颜色=右区间左端颜色时候,总颜色-1,树上的维护类似. 代码 1 #include<cstdio> 2 co ...

  6. BZOJ 1014 [JSOI2008]火星人prefix

    splay维护hash值: 看到大佬们都在打数据结构,我说好的不打数据结构又自己打脸了. 为了写这个昨天还特意去打了Splay的普通平衡树,自从我学会Treap以来第一次用splayA掉普通平衡树QA ...

  7. BZOJ4373: 算术天才⑨与等差数列

    Description 算术天才⑨非常喜欢和等差数列玩耍. 有一天,他给了你一个长度为n的序列,其中第i个数为a[i]. 他想考考你,每次他会给出询问l,r,k,问区间[l,r]内的数从小到大排序后能 ...

  8. BZOJ 2333 【SCOI2011】 棘手的操作

    题目链接:棘手的操作 网上的题解大部分都是在线用可并堆艹--但是树高严格\(\log\)的可并堆我不会啊--还是离线大法好-- 我们可以先把所有的合并操作用并查集给处理好,把得到的森林记录下来.然后, ...

  9. Codeforces Round #395 (Div. 2)(未完)

    2.2.2017 9:35~11:35 A - Taymyr is calling you 直接模拟 #include <iostream> #include <cstdio> ...

最新文章

  1. 25个Linux性能监控工具
  2. Python3的urllib.parse常用函数小结
  3. 【Wicket是个什么鬼】wicket框架URL路由规则
  4. java 之 桥接模式(大话设计模式)
  5. 前端学习(2640):懂代码之登录页login.vue存入用户信息
  6. 爬虫——多线程糗事百科案例
  7. IAM(身份验证以及访问控制)
  8. 目标检测再次革新!图灵奖得主团队提出Pix2Seq,将Detection变成了Image Captioning...
  9. Redis 禁止使用耗时命令和时间复杂度为O(n)的命令
  10. Glide修改本地图片缓存路径
  11. 3D数学基础:矩阵的几何解释
  12. 2022-2028年中国智慧教育行业发展策略分析及投资前景研究报告
  13. RouterOS 端口映射
  14. 【ArcGIS Pro二次开发】(5):UI管理_自定义控件的位置
  15. DNS,二级域名泛解析
  16. 重整网站。。。。。。。。。
  17. python中形参只在函数内部有效_【Python】函数
  18. 天堂在前方——与所有有梦想、有追求的人共勉
  19. SLI、SLO和SLA,一文彻底搞懂!!!
  20. LeecCode哈希表汇总

热门文章

  1. 【React-music项目问题】The AudioContext was not allowed to start. It must be resumed (or created) after a
  2. 从小白的角度理解二项分布、几何分布和泊松分布
  3. 先学c 还是先学java_小白学编程语言一开始先学c还是java?
  4. 2020-12-03《Presto分布式SQL查询引擎——kkb笔记复习》
  5. 合合信息——用智能文字识别技术赋能古彝文原籍数字化
  6. U盘制做多系统启动盘
  7. 护士副高需要计算机考试吗,护士评副高什么要求
  8. BMC-IPMB specification
  9. linux i2c模型 rtc模型 详细分析,Linux RTC驱动分析(一)----pcf8563驱动和class.c
  10. 学tlc和JAVA,#Java学习之路——第一部分总结