scipy.stats分布直方图可制成的scipy.stats正常随机变量看到分布的样子.
% matplotlib inline
import pandas as pd
import scipy.stats as stats
d = stats.norm()
rv = d.rvs(100000)
pd.Series(rv).hist(bins=32, normed=True)
Run Code Online (Sandbox Code Playgroud)
其他发行版是什么样的?
我有一个数据集sklearn,我绘制了load_diabetes.target数据的分布(即load_diabetes.data用于预测的回归值).
我使用它是因为它具有最少数量的回归变量/属性sklearn.datasets.
使用Python 3,我如何获得最接近类似的分布类型和分布参数?
我所知道的target价值都是积极的和倾斜的(假定倾斜/右倾斜)...Python中是否有一种方法可以提供一些分布,然后最适合target数据/向量?或者,根据给出的数据实际建议拟合?对于那些具有理论统计知识但很少将其应用于"真实数据"的人来说,这将是非常有用的.
奖金 使用这种方法来确定你的后验分布对"真实数据"的影响是否合理?如果不是,为什么不呢?
from sklearn.datasets import load_diabetes
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
import pandas as pd
#Get Data
data = load_diabetes()
X, y_ = data.data, data.target
#Organize Data
SR_y = pd.Series(y_, name="y_ (Target Vector Distribution)")
#Plot Data
fig, ax = plt.subplots()
sns.distplot(SR_y, bins=25, color="g", ax=ax)
plt.show()
Run Code Online (Sandbox Code Playgroud)
python statistics distribution machine-learning data-fitting
简介:我是生物信息学家.在我对所有人类基因(约20 000)进行的分析中,我搜索特定的短序列基序,以检查每个基因中出现这个基序的次数.
基因以四个字母(A,T,G,C)的线性序列"书写".例如:CGTAGGGGGTTTAC ......这是遗传密码的四个字母的字母表,就像每个细胞的秘密语言一样,它就是DNA实际存储信息的方式.
我怀疑在一些基因中频繁重复特定的短基序列(AGTGGAC)在细胞的特定生化过程中是至关重要的.由于基序本身非常短,因此用计算工具很难区分基因中的真实功能性实例和偶然看起来相似的实例.为了避免这个问题,我得到了所有基因的序列并连接成一个字符串并进行了改组.存储每个原始基因的长度.然后,对于每个原始序列长度,通过从连接序列中随机重复地挑选A或T或G或C并将其转移到随机序列来构建随机序列.以这种方式,得到的随机序列组具有相同的长度分布,以及总体A,T,G,C组成.然后我在这些随机序列中搜索主题.我将此程序置于1000次并对结果取平均值.
15000个不含给定基序的基因5000个基因含有1个基序3000个基因,含有2个基序1000个含有3个基序的基因... 1个含有6个基序的基因
因此,即使经过1000次真正遗传密码的随机化,也没有任何基因具有超过6个基序.但是在真正的遗传密码中,有一些基因含有超过20个基序的出现,这表明这些重复可能是有效的,并且它不可能通过纯粹的机会找到它们如此丰富.
问题:我想知道找到一个基因的可能性,假设我的分布中出现了20个基序.所以我想知道偶然发现这样一个基因的可能性.我想在Python中实现它,但我不知道如何.
我可以在Python中进行这样的分析吗?
任何帮助,将不胜感激.
我试图用自定义概率密度函数拟合一些实验值的分布.显然,所得到的函数的积分应该总是等于1,但简单scipy.optimize.curve_fit(功能,dataBincenters,dataCounts)的结果从未满足该条件.解决这个问题的最佳方法是什么?
我已经开始使用python进行分析.我想做以下事情:
我使用scipy.stats中的gaussian_kde来估算核密度函数.guassian_kde是否对数据做出任何假设?我正在使用随时间变化的数据.因此,如果数据具有一个分布(例如高斯分布),则稍后可能会有另一个分布.gaussian_kde在这种情况下有任何缺点吗?有人建议在问题要尽量合身,以获得数据分布在每个分布的数据.那么,什么是使用gaussian_kde并提供了答案之间的差异问题.我使用下面的代码,我还想知道如果数据会随着时间的推移而改变,那么gaussian_kde是估算pdf的好方法吗?我知道gaussian_kde的一个优点是它可以通过经验法则自动计算带宽,如此处所示.另外,我怎样才能达到顶峰?
import pandas as pd
import numpy as np
import pylab as pl
import scipy.stats
df = pd.read_csv('D:\dataset.csv')
pdf = scipy.stats.kde.gaussian_kde(df)
x = np.linspace((df.min()-1),(df.max()+1), len(df))
y = pdf(x)
pl.plot(x, y, color = 'r')
pl.hist(data_column, normed= True)
pl.show(block=True)
Run Code Online (Sandbox Code Playgroud) 假设我有一个数组:adata=array([0.5, 1.,2.,3.,6.,10.])并且我想计算这个数组的威布尔分布的对数似然,给定参数[5.,1.5]和[5.1,1.6]。我从没想过我需要为此任务编写自己的威布尔概率密度函数,因为它已经在scipy.stat.distributions. 所以,这应该这样做:
from scipy import stats
from numpy import *
adata=array([0.5, 1.,2.,3.,6.,10.])
def wb2LL(p, x): #log-likelihood of 2 parameter Weibull distribution
return sum(log(stats.weibull_min.pdf(x, p[1], 0., p[0])), axis=1)
Run Code Online (Sandbox Code Playgroud)
和:
>>> wb2LL(array([[5.,1.5],[5.1,1.6]]).T[...,newaxis], adata)
array([-14.43743911, -14.68835298])
Run Code Online (Sandbox Code Playgroud)
或者我重新发明轮子并编写一个新的 Weibull pdf 函数,例如:
wbp=lambda p, x: p[1]/p[0]*((x/p[0])**(p[1]-1))*exp(-((x/p[0])**p[1]))
def wb2LL1(p, x): #log-likelihood of 2 paramter Weibull
return sum(log(wbp(p,x)), axis=1)
Run Code Online (Sandbox Code Playgroud)
和:
>>> wb2LL1(array([[5.,1.5],[5.1,1.6]]).T[...,newaxis], adata)
array([-14.43743911, -14.68835298])
Run Code Online (Sandbox Code Playgroud)
诚然,我总是理所当然地认为,如果某些东西已经在scipy. 但令人惊讶的是:如果 I timeit100000 次调用wb2LL1(array([[5.,1.5],[5.1,1.6]])[...,newaxis], adata)需要 2.156 秒,而 …
是否有任何函数或库可以帮助我绘制样本的概率质量函数,就像绘制样本的概率密度函数一样?
例如,使用pandas,绘制PDF就像调用一样简单:
sample.plot(kind="density")
Run Code Online (Sandbox Code Playgroud)
如果没有简单的方法,我如何计算PMF,以便我可以使用matplotlib进行绘图?
我有一个包含两列的数据框,我对其进行了散点图绘制,并得到如下图所示的内容:

我想知道是否有一种方法可以找到最适合它的分布曲线,因为我发现这些教程只关注一个变量的分布(例如,这种情况。我正在寻找这样的东西:

有人针对这种情况有任何指示或示例代码吗?
- - 样本 - -
我有一个数据集(示例),其中包含 1维数组中的 1 000 个损坏值(这些值非常小 <1e-6)(请参阅随附的 .json 文件)。样本似乎遵循对数正态分布:

--- 问题和我已经尝试过的东西 ---
我尝试了这篇文章中的建议,用 Scipy (Python) 将经验分布拟合到理论分布?和这篇文章Scipy:对数正态拟合通过对数正态分布拟合我的数据。这些都不起作用。:(
我总是在 Y 轴上得到一些非常大的东西,如下所示:
这是我在 Python 中使用的代码(data.json文件可以从这里下载):
from matplotlib import pyplot as plt
from scipy import stats as scistats
import json
with open("data.json", "r") as f:
sample = json.load(f) # load data: a 1000 * 1 array with many small values( < 1e-6)
fig, axis = plt.subplots() …Run Code Online (Sandbox Code Playgroud) 我有一个数据集,我想适应已知的概率分布.目的是在数据生成器中使用拟合的PDF - 这样我就可以从已知(拟合的)PDF中采样数据.数据将用于模拟目的.目前我只是从正态分布中采样,这与实际数据不一致,因此仿真结果不准确.
我首先想使用以下方法: 使用Scipy(Python)将经验分布拟合到理论分布?
我的第一个想法是将它与weibull分布相匹配,但数据实际上是多模式的(附图).所以我想我需要组合多个分布,然后将数据拟合到生成的dist中,是吗?也许结合高斯和威布尔分布?
如何将scipy fit()函数与混合/多模态分布一起使用?
另外我想在Python中做这个(即scipy/numpy/matplotlib),因为数据生成器是用Python编写的.
非常感谢 !
我一直在冲浪,但没有找到正确的方法来执行以下操作.
我用matplotlib完成了直方图:
hist, bins, patches = plt.hist(distance, bins=100, normed='True')
Run Code Online (Sandbox Code Playgroud)
从图中,我可以看到分布或多或少是指数(泊松分布).考虑到我的hist和bin数组,我怎样才能做到最佳拟合?
UPDATE
我使用以下方法:
x = np.float64(bins) # Had some troubles with data types float128 and float64
hist = np.float64(hist)
myexp=lambda x,l,A:A*np.exp(-l*x)
popt,pcov=opt.curve_fit(myexp,(x[1:]+x[:-1])/2,hist)
Run Code Online (Sandbox Code Playgroud)
但我明白了
---> 41 plt.plot(stats.expon.pdf(np.arange(len(hist)),popt),'-')
ValueError: operands could not be broadcast together with shapes (100,) (2,)
Run Code Online (Sandbox Code Playgroud) 我有一组原始数据,我必须确定该数据的分布.绘制概率分布函数的最简单方法是什么?我试过在正态分布中拟合它.
但是我更好奇地知道数据本身带有哪些分布?
我没有代码来显示我的进度,因为我没有在python中找到任何允许我测试数据集分布的函数.我不想切片数据并强制它适合可能正常或偏斜分布.
有没有办法确定数据集的分布?任何建议表示赞赏.
这是正确的方法吗?示例
这是我正在寻找的东西,但它再次使数据符合正态分布.例
编辑:
输入有数百万行,下面给出了简短的样本
Hashtag,Frequency
#Car,45
#photo,4
#movie,6
#life,1
Run Code Online (Sandbox Code Playgroud)
从频率范围1来20,000算,我试图找出关键字的频率分布.我尝试绘制一个简单的直方图,但我将输出作为单个条形图.
码:
import pandas
import matplotlib.pyplot as plt
df = pandas.read_csv('Paris_random_hash.csv', sep=',')
plt.hist(df['Frequency'])
plt.show()
Run Code Online (Sandbox Code Playgroud)
python ×13
scipy ×8
matplotlib ×7
pandas ×5
numpy ×4
distribution ×3
statistics ×3
weibull ×2
data-fitting ×1
matlab ×1
optimization ×1
performance ×1
plot ×1
probability ×1
python-2.7 ×1