我想在R中产生一个核密度估计,并且在所有不同的软件包中都有一些问题.我需要能够:
你会怎么做?代码段的奖励积分.
我正在尝试在ggplot2中的R中创建一个简单的密度图.这是我的代码很好用.
d <- ggplot(result, aes(x=result$baseMeanA))
d + geom_density(colour="darkgreen", size=2, fill="darkgreen") +
scale_x_log10() + scale_y_continuous(limits = c(0, 0.45))
Run Code Online (Sandbox Code Playgroud)
问题是我不能像我想的那样将x轴调整为负数.
scale_x_log10(limits= c(1, 10000))
Run Code Online (Sandbox Code Playgroud)
效果很好,但是
scale_x_log10(limits= c(-1, 10000))
Run Code Online (Sandbox Code Playgroud)
根本不起作用!它给了我这个错误:
if(zero_range(range)){:缺少值需要TRUE/FALSE时出错
请帮忙!
我需要代码来做二维核密度估计(KDE),我发现SciPy实现太慢了.所以,我已经编写了一个基于FFT的实现,但有些事情让我很困惑.(FFT实现还强制执行周期性边界条件,这就是我想要的.)
该实现基于从样本创建简单的直方图,然后使用高斯进行卷积.这是执行此操作的代码,并将其与SciPy结果进行比较.
from numpy import *
from scipy.stats import *
from numpy.fft import *
from matplotlib.pyplot import *
from time import clock
ion()
#PARAMETERS
N = 512 #number of histogram bins; want 2^n for maximum FFT speed?
nSamp = 1000 #number of samples if using the ranom variable
h = 0.1 #width of gaussian
wh = 1.0 #width and height of square domain
#VARIABLES FROM PARAMETERS
rv = uniform(loc=-wh,scale=2*wh) #random variable that can generate samples
xyBnds = linspace(-1.0, 1.0, N+1) …Run Code Online (Sandbox Code Playgroud) 我有一个数据框,想要根据两列做一个叠加密度图.我希望颜色是透明的.我使用填充选项完成了此操作,并且基本上将填充分配为因子列.如果默认情况下有一个因子列,则所有填充都将是透明的.
但在这样的情况下,没有因素我们如何用透明填充它.
library("ggplot2")
vec1 <- data.frame(x=rnorm(2000, 0, 1))
vec2 <- data.frame(x=rnorm(3000, 1, 1.5))
ggplot() + geom_density(aes(x=x), fill="red", data=vec1) +
geom_density(aes(x=x), fill="blue", data=vec2)
Run Code Online (Sandbox Code Playgroud)
我尝试添加,geom_density(alpha=0.4)但它没有任何好处.

尝试将一些代码从Matlab移植到RI时遇到了问题.代码的要点是产生2D核密度估计,然后使用估计进行一些简单的计算.在Matlab中,使用函数ksdensity2d.m完成KDE计算.在R中,KDE计算使用MASS包中的kde2d完成.所以我想说我想计算KDE并只是添加值(这不是我打算做的,但它可以达到这个目的).在R中,这可以通过
library(MASS)
set.seed(1009)
x <- sample(seq(1000, 2000), 100, replace=TRUE)
y <- sample(seq(-12, 12), 100, replace=TRUE)
kk <- kde2d(x, y, h=c(30, 1.5), n=100, lims=c(1000, 2000, -12, 12))
sum(kk$z)
Run Code Online (Sandbox Code Playgroud)
给出答案0.3932732.在Matlab中使用ksdensity2d时,使用相同的确切数据和条件,答案为0.3768.从查看kde2d的代码,我注意到带宽除以4
kde2d <- function (x, y, h, n = 25, lims = c(range(x), range(y)))
{
nx <- length(x)
if (length(y) != nx)
stop("data vectors must be the same length")
if (any(!is.finite(x)) || any(!is.finite(y)))
stop("missing or infinite values in the data are not allowed")
if (any(!is.finite(lims)))
stop("only finite values are allowed in …Run Code Online (Sandbox Code Playgroud) 似乎有很多信息和工具可用于实现标准的多变量或单变量内核密度估计。但是,我目前正在使用的离散地理数据特别稀疏,并且倾向于聚集在人口密度高的地区。
也就是说,我在地图上有许多点(经度和纬度),并且我想根据这些点估计概率密度,但是我需要以某种方式对人口密度进行归一化。从环顾四周来看,似乎这类问题的适当方法将是为内核估计实现某种最邻近的自适应带宽。但是,似乎stats.gaussian_kde不支持自适应带宽。有谁知道我自己可能如何实现这一目标,或者是否有适用于自适应带宽KDE的软件包?
我试图使用Julia估计使用N个观察数据点(存储为Float64数字数组)的连续单变量分布,然后从该估计分布中进行采样.我没有先前的知识限制对某些发行家族的关注.
我正在考虑使用KernelDensity包来估计分布,但我不确定如何从结果输出中进行采样.
任何帮助/提示将不胜感激.
我试图通过 python 使用 r 的密度函数,并且必须将“from”、“to”参数传递给密度函数。然而,由于“from”这个词是Python中的保留关键字,我该如何实现这一点呢?谢谢。这是到目前为止的代码。
r_density=robjects.r('density')
f_a = robject.FloatVector(a)
r_a = r_density(f_a, bw='SJ', n=1024) ## Here I need to add 'from' and 'to' arguments
Run Code Online (Sandbox Code Playgroud) 假设我们有一个数字在0到1之间的数组:
arr=np.array([ 0. , 0. , 0. , 0. , 0.6934264 ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0.6934264 , 0. , 0.6934264 ,
0. , 0. , 0. , 0. , 0.251463 ,
0. , 0. , 0. , 0.87104906, 0.251463 ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0.48419626,
0. , 0. , 0. , 0. , 0. , …Run Code Online (Sandbox Code Playgroud) 给出以下示例脚本:
import seaborn as sns
import pandas as pd
import numpy as np
# Generate some random multivariate data
x, y = np.random.RandomState(8).multivariate_normal([0, 0], [(1, 0), (0, 1)], 1000).T
# Add to a dataframe
df = pd.DataFrame({"x":x,"y":y})
# Plot
p = sns.jointplot(data=df,x='x', y='y',kind='kde')
Run Code Online (Sandbox Code Playgroud)
...给出以下情节:
我如何找到 x 轴和 y 轴上密度最大的位置?
我想注释中心图最密集的区域,并花了一段时间搜索每个图的属性,但似乎没有什么突出的。我认为这可能就像获取顶部 KDE 图的最大 y 轴值和右侧 KDE 图的最大 x 轴值一样简单,但到目前为止还不容易找到。
kernel-density ×10
python ×5
r ×5
ggplot2 ×2
seaborn ×2
density-plot ×1
distribution ×1
fft ×1
julia ×1
matlab ×1
numpy ×1
rpy2 ×1
scipy ×1