我想画一个洛伦兹曲线,并计算一个基尼指数,目的是确定最受感染的20%的宿主支持多少寄生虫。
这是我的数据集:
每个宿主的寄生虫数量:
parasites = c(0,1,2,3,4,5,6,7,8,9,10)与上述各数量寄生虫相关联的宿主数:
hosts = c(18,20,28,19,16,10,3,1,0,0,0)要表示Lorenz曲线:
我手工计算了寄生虫和宿主的累积百分比:
cumul_parasites <- cumsum(parasites)/max(cumsum(parasites))
cumul_hosts <- cumsum(hosts)/max(cumsum(hosts))
plot(cumul_hosts, cumul_parasites, type= "l")

我还测试了函数Lc (包ineq):
Lc.p <- Lc(parasites,n=hosts)
plot(Lc.p)

为什么这两条曲线(手动和函数Lc)不同?
发布于 2017-02-07 17:17:52
这两个图是不同的,因为当你计算累积的概率(度)时,你必须用频率乘以它。
正确的解决办法是:
parasites = c(0,1,2,3,4,5,6,7,8,9,10)
hosts = c(18,20,28,19,16,10,3,1,0,0,0)
cumul_parasites <- cumsum(parasites*hosts)/max(cumsum(parasites*hosts))
cumul_hosts <- cumsum(hosts)/max(cumsum(hosts))
plot(cumul_hosts, cumul_parasites, type= "l")
lines(cumul_hosts, cumul_parasites,col = 2, lwd = 2, type = "p")
legend("topleft", c('My calc', 'LC'), col = 1:2, lty = 1, box.col = 1)这完全符合Lc的计算。

https://stackoverflow.com/questions/36268402
复制相似问题