繁体   English   中英

使用Python通过加权选择固定人口

Fixation in population with weighted choices using Python

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试进行仿真,以查看人口固定的速度。 总体由1(或p)和0(或q)组成,而每个人都有2个元素(1-1、1-0或0-0)。

N是人口,并且由于人口的每个成员都有2个元素,因此人口池将为2 * N(在这种情况下为20)

1s的初始频率为0.1,默认情况下,q为1-0.1 = 0.9

因此初始填充为[1、1、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0]

对于下一个种群,我根据频率(p_freq和q_freq)随机选择(加权选择),并对其进行迭代,直到种群固定为全1或全0。 修复后,我尝试在p_fix或q_fix列表中记录修复的一代

因此,我已经将此方法用于一个模拟,但是我正尝试使其适用于n = 100个模拟,并且我无法弄清楚如何构造它来获取循环以继续填充p_fix和q_fix正确列出

#!/usr/bin/env python2.7
import random

N= 10
n= 100
p_freq= 0.1
q_freq= 1 - p_freq

simulation= 0
p_fix= []
q_fix= []

for sim in range(n):
    generation= 0
    #Current population
    p_alleles= int(p_freq * 2*N)*[1]
    q_alleles= int(q_freq * 2*N)*[0]
    population= p_alleles + q_alleles
    while (sum(population) != 2*N) and (sum(population) != 0):
        #Checking current population for fixation

        #Next generation
        next_population= []
        for i in range(2*N): next_population.append(random.choice(population))

        #Resetting parameters

        p_freq= float(sum(next_population))/(2*N)
        q_freq= 1 - p_freq
        population= next_population

        #Counts
        generation += 1
    if sum(population) == 2*N: 
        p_fix.append(generation)
    if sum(population) == 0: 
        q_fix.append(generation)
    simulation += 1

我打印出p_fix和q_fix时的结果:

p []
q [3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

在第一个模拟之后,它不应该是所有模拟的第0代。 但是,将人口固定为q是有道理的,因为原始人口的90%是q(即0s)。 每个人口的频率都会发生变化(这就是我重置它们的原因),并导致凝视。 人口规模保持不变。

如何使它运行多个仿真?

1 个回复

您的问题是,每次仿真后都没有重置p_freq= 0.1q_freq= 1 - p_freq 您需要在您的: for sim in range(n):它们重置: for sim in range(n):循环中(否则它们保留来自最后一个sim的值)。

1 从固定人口长度生成随机唯一数字的问题

我在这里有一个问题:我需要生成给定长度的随机数,每次生成这些数字时,我都需要检查它是否已经被看到。 示例:我的固定人口规模是 2.000.000。 因此,例如,在我算法的第一轮中,我的样本大小是 400.000。 我需要生成超过 2.000.000 的 400.000。 生成这些随机数后,我将它们 ...

2 SQL 加权平均 - 人口和收入

我试图在使用加权平均值的同时找到平均家庭收入。 我有一个包含总人口和平均家庭收入的邮政编码数据源。 我希望能够选择多个邮政编码,但仍能获得准确的平均家庭收入。 我可以使用 SQL 来提取这样的加权平均值吗? 压缩 TOTAL_POP AVG_HH ...

4 使用python制作加权直方图?

因此,我想创建一个加权的直方图,因为我有一些比其他像素更重要的像素。 例如,我想给中心区域像素一个比边框上的像素更大的权重。 我目前正在使用opencv CascadeClassifier检测到一个对象,并使用numpy生成目标的直方图,但是我想给中心区域的像素提供比边框上其他像素更大的 ...

5 使用Python 3.7.3,在给定目录中的文件加权列表中随机选择/选择

使用Python 3.7.3,我需要从给定目录中的文件的加权列表中随机选择。 权重取决于文件的最新程度以及用户是否被标记为收藏夹(文件越新,选择频率越高)。 设置权重的最有效方法是什么? 我希望我随机选择的元素的分布行为与列表中权重的分布相同。 “收藏夹”标志将存储在一个字典中,该字 ...

6 如何在python中进行加权双向固定效应回归

双向固定效应模型是计量经济学中面板数据的主力军: http://web.mit.edu/insong/www/pdf/FEmatch-twoway.pdf 我找不到任何可以双向运行固定效果模型(如stata的reghdfe)并带有权重的程序包。 这可能在python中吗? ...

7 各州人口规模的加权面板回归

我目前正在研究美国各州的年度调查数据,该数据每年和各州一次。 现在,我想说明该州不同的人口规模。 什么是加权回归的正确方法-第一还是第二: 另外,我正在考虑借助survey包来实现回归。 但是,我仍然不完全理解为什么标准错误会有所不同。 ...

8 在r中绘制加权人口密度

我正在分析R中的一批数据,并在上面绘制了人口密度。 我还想生成一个值密度图。 例如: 标准密度图将计算每个品种的出现次数,然后输出一条漂亮的曲线,如下所示: 但是,我试图获得的是一条类似的平滑曲线,用于跟踪每个品种的权重之和,如下所示: 我可以通过建立一系列点(例如最 ...

2012-07-25 21:35:49 1 508   r
9 python 2的高性能加权随机选择?

我有以下python方法,该方法从序列“ seq”中选择一个加权随机元素,该序列被其他序列随机加权,其中包含seq中每个元素的权重: 如果我用1000个元素序列调用上述方法一百万次,如下所示: 它在cpython 2.7中运行大约45秒,在cpython 3.6中运行70秒。 ...

10 加权数据的逻辑回归(人口)

我试图对通过真实调查收集的数据进行逻辑回归。 数据集包含汇总数据(即,作为微数据的总和得出),并具有以下列: 有关特征存在的因变量(二进制:0,1) 三个解释性的分类变量,即性别,年龄组和受教育程度 在对受访者进行加权调整后反映出总体水平上的抽样频率后,以千为单位的值 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM