首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

R语言用Rcpp加速Metropolis-Hastings抽样估计贝叶斯逻辑回归模型参数

TLDR:只需用C ++编写log-posterior而不是矢量化R函数,我们就可以大大减少运行时间。 我模拟了模型数据: ?...前者使用对数后验编码作为向量化R函数。后者使用C ++(log\_post.cpp)中log-posterior编码,并使用Rcpp编译成R函数。...Armadillo库对C ++中矩阵和向量类很有用。 ---- 因此,在每次迭代中,提出了系数向量。下面用红线表示链,表示生成数据参数值。...那么Rcpp实现与R实现相比如何呢?Rcpp运行时间明显较低。当log-posterior被编码为矢量化R函数,采样器相对于Rcpp实现运行速度大约慢7倍(样本大小为100)。...下图显示了样本大小为100到5000相对运行时间,增量为500。

56320

社交网络分析 R 基础:(三)向量、矩阵与列表

x <- c(1, 2, 3, 4, 5) 上面一行代码就是创建一个包含 5 个元素向量 x,而 c() 就是创建向量函数。...向量作为一种无限长度数据结构,此处 length 是指向量初始化时长度,后续仍然可以使用 c() 添加元素。...向量运算 向量可以直接进行算数运算,运算向量对应元素进行同样算术运算。...这时使用 Rcpp 包调用 C++ 代码,采用并行计算方式加快计算速度。对于矩阵计算操作,安装 Rcpp同时还需要安装 RcppEigen 包。...; } 紧接着在工作区中引入 Rcpp 包与 matrix.cpp 文件,此时就可以调用特征值计算函数 eigenValues() 和特征向量计算函数 eigenVectors()。

2.7K20
您找到你想要的搜索结果了吗?
是的
没有找到

提升R代码运算效率11个实用方法

众所周知,当我们利用R语言处理大型数据集,for循环语句运算效率非常低。有许多种方法可以提升你代码运算效率,但或许你更想了解运算效率能得到多大提升。...1.向量化处理和预设数据库结构 循环运算前,记得预先设置好数据结构和输出变量长度和类型,千万别在循环过程中渐进性地增加数据长度。接下来,我们将探究向量化处理是如何提高处理数据运算速度。 ?...6.利用apply族函数来替代for循环语句 本部分将利用apply()函数来计算上文所提到案例,并将其与向量循环语句进行对比。...接下来我们将利用Rcpp来实现该运算过程,并将其与ifelse()进行比较。 ? 下面是利用C++语言编写函数代码,将其保存为“MyFunc.cpp”并利用sourceCpp进行调用。 ?...9.利用并行运算 并行运算代码: ? 10.尽早地移除变量并恢复内存容量 在进行冗长循环计算前,尽早地将不需要变量移除掉。在每次循环迭代运算结束利用gc()函数恢复内存也可以提升运算速率。

1.5K80

提升R代码运算效率11个实用方法——并行、效率

1.向量化处理和预设数据库结构 循环运算前,记得预先设置好数据结构和输出变量长度和类型,千万别在循环过程中渐进性地增加数据长度。接下来,我们将探究向量化处理是如何提高处理数据运算速度。 ?...6.利用apply族函数来替代for循环语句 本部分将利用apply()函数来计算上文所提到案例,并将其与向量循环语句进行对比。...该方法运算效率优于原始方法,但劣于ifelse()和将条件语句置于循环外端方法。该方法非常有用,但是当你面对复杂情形,你需要灵活运用该函数。 ?...8.利用Rcpp 截至目前,我们已经测试了好几种提升运算效率方法,其中最佳方法是利用ifelse()函数。如果我们将数据量增大十倍,运算效率将会变成啥样呢?...接下来我们将利用Rcpp来实现该运算过程,并将其与ifelse()进行比较。 ? 下面是利用C++语言编写函数代码,将其保存为“MyFunc.cpp”并利用sourceCpp进行调用。 ?

1K50

For循环与向量化(Vectorization)

现在我们希望针对每个计算当期增长率,其公式如下: 大家可能首先想到是利用For循环来做。假如一个向量长度为,那么我们就把上面的增长率公式应用遍。这种思路以标量(scalar)角度考虑问题。...我们定义向量长度为10000,重复运行1000次,测定计算其运行中位数时长(为了防止极值对结果影响)。...在计算时间方面,运用microbenchmark包,生成每次运行时间,最后计算中位数,代码与结果如下: library(microbenchmark) growthRBL <- function(x)...向量作为最基本数据结构,其在进行底层编写时候,进行了很大程度优化设计。向量有时候作为一种基本编写思路,是具有很高效率。有鉴于此,我们通过R语言最底层向量思维进行函数编写。...通过运行结果可以发现,Rcpp调用底层循环略优于data.table向量化,运行时间在0.03s左右。

1.7K30

基于梯度下降算法线性回归拟合(附pythonmatlabjulia代码

补充:导数和微分区别   导数是函数在某一点处斜率,是Δy和Δx比值;而微分是指函数在某一点处切线在横坐标取得增量Δx以后,纵坐标取得增量,一般表示为dy。   ...梯度就是由微分结果组成向量,令 ? 有 ? 那么,函数f(x,y,z)在(1,2,3)处微分为 ? 因此,函数f(x,y,z)在(1,2,3)处梯度为(6,11,6)。   ...梯度是一个向量,对于一元函数,梯度就是该点处导数,表示切线斜率。对于多元函数,梯度方向就是函数在该点上升最快方向。   梯度下降法就是每次都寻找梯度反方向,这样就能到达局部最低点。   ...代价函数有下面几个性质: 对于每种算法来说,代价函数不是唯一; 代价函数是参数θ函数; 总代价函数J(θ)可以用来评价模型好坏,代价函数越小说明模型和参数越符合训练样本(x, y); J(θ)是一个标量...Axes3D x = np.linspace(-3.1,3.1,300) y = np.linspace(-3.1,3.1,300) x,y = np.meshgrid(x, y) z = x**2

2.7K10

Rcpp在R语言中实现C++与R交互

R语言为其他语言提供了很多接口,其中最最高级接口就是C++/C。今天就给大家介绍下在R中如何直接调用C++函数进行数据计算。在这里需要用到包是Rcpp。...我们首先看下包安装: install.packages('Rcpp') install.packages("inline") 接下来我们看下C++与R进行数据交互共有数据格式及其函数名称: 向量:...汇总函数: mean(), min(), max(), sum(), sd(),and (for vectors) var() 返回向量汇总函数: cumsum(), diff(), pmin(),...在构建好C++文件后,我们可以通过Rcpp自带sourceCpp将C++文件引入R语言之后其函数就可以像R中函数一样直接被调用。 ?...当然,我们可以自己根据自己需要对函数进行改写,函数书写格式如下: ? 那么,在R包中我们需要怎么去调用C++呢,那就需要构建对应代码,引入所需要库文件。

2.9K20

matlab中ode45函数解二阶微分方程_matlab求常微分方程组

在输出中,te 是事件时间,ye 是事件发生解,ie 是触发事件索引。 对于每个事件函数,应指定积分是否在零点处终止以及过零方向是否重要。...函数 f(t) 由在时间 ft 时计算 n×1 向量 f 定义。函数 g(t) 由在时间 gt 时计算 m×1 向量 g 定义。 创建向量 f 和 g。...ft = linspace(0,5,25); f = ft.^2 - ft - 3; gt = linspace(1,6,25); g = 3*sin(gt-0.25); 编写名为 myode 函数...,该函数通过对 f 和 g 进行插值获取变项在指定时间值。...示例: options = odeset('RelTol',1e-5,'Stats','on','OutputFcn',@odeplot) 指定 1e-5 相对误差容限、打开求解器统计信息显示,并指定输出函数

3.3K10

【MATLAB 从零到进阶】 动画制作

comet函数 调用格式: comet(y)显示质点绕着向量y二维动画轨迹 comet(x,y)显示质点绕着向量y与x二维动画轨迹 comet(x,y,p)用输入参数 p 定义轨迹尾巴线长度...comet3函数 调用格式: comet3(z)显示质点绕着向量z三维动画轨迹 comet3(x,y,z)显示质点绕着向量x 、y与z三维动画轨迹 comet(x,y,z,p)用输入参数 p...定义轨迹尾巴线长度 comet(axes_handle,...)在句柄值为axes_handle坐标系中显示动画 x=20sint 质点绕螺旋线 y=20cost 运动三维彗星运行轨迹动画...,并设置增量参数inc,该参数用来调整闪烁频率; spinmap('inf'),不限时旋转颜色映像,若需终止,请按Ctrl+C键。...movie函数 调用格式: movie(M)在当前坐标系中只播放一次由矩阵M所保存电影 movie(M,n)播放n次,若n为负数,则倒着循环播放,若n为向量, 第一个元素为播放次数,后续元素为帧序号

1.4K20

Matlab中axis函数使用

为了避免在使用 hold on 范围发生更改,请使用 axis tight manual。 equal 沿每个坐标轴使用相同数据单位长度。...将 DataAspectRatio 设置为 [1 1 1],并将相关模式属性设置为手动。禁用“伸展填充”行为。 square 使用相同长度坐标轴线。相应调整数据单位之间增量。...指定坐标区,需要将字符向量类型其他输入参数用单引号引起来。 lim – 当前范围值 当前范围值,以四元素或六元素向量形式返回。...后面的选项会覆盖前面的选项设置属性。 如果坐标区不存在,则 axis 函数会创建坐标区。 使用 hold on 避免绘图函数覆盖预设坐标轴范围。...将字符向量类型输入参数用单引号引起来,例如 axis(ax,'equal')。 示例 设置坐标轴范围 绘制正弦函数

3.5K20

matlab plot函数详解_MATLABplot

plot(X,Y) 如果 X 和 Y 都是向量,则它们长度必须相同。plot 函数绘制 Y 对 X 图。 如果 X 和 Y 均为矩阵,则它们大小必须相同。...plot 函数绘制 Y 列对 X 图。 如果 X 或 Y 中一个是向量,而另一个是矩阵,则矩阵各维中必须有一维与向量长度相等。...如果矩阵行数等于向量长度,则 plot 函数绘制矩阵中每一列对向量图。如果矩阵列数等于向量长度,则该函数绘制矩阵中每一行对向量图。如果矩阵为方阵,则该函数绘制每一列对向量图。...plot(Y) 如果 Y 是向量,x 轴刻度范围是从 1 至 length(Y)。 如果 Y 是矩阵,则 plot 函数绘制 Y 中各列对其行号图。...(0,2*pi); plot(x,'xr') xlabel('X(m)') ylabel('Y(m)') 输出结果: 代码2: clc; clear; % 绘制 x = linspace(0,2

1.6K30

ORA富集分析

>通路中基因数,取m为最大,代表该通路中全部基因都为差异表达基因)概率进行求和。...代码实现 这里我们以GO数据库为例 因为我是从写好整个函数里摘出对应代码,所以先需要给一些参数赋值,同时我们取500个感兴趣(这里只是示例)基因作为输入 #注意在调试代码时候不要与以下变量重名...第一个是一个包含了若干向量列表(lt),第二个参数是一个向量(x),其中x会和lt中每一个向量进行intersection。在Cpp代码中,顾叔去掉了lt中每一个向量中重复元素。...,最简单用法就是输入一个是基因entrezid向量,返回结果就是过表达分析表格,函数代码如下: 参数gene就是输入entrezid向量, min_gene是默认过滤掉富集到基因数量<10通路...R语言中intersect函数在进行一万多次富集分析明显较慢,我们可以使用顾叔用c++写相同功能函数可以提升一点富集分析效率。

29210

《高效R语言编程》7--高效优化

需要用到包:microbenchmark, ggplot2movies, profvis, Rcpp 代码分析 首先是确定哪个是瓶颈,Rprof()是可以分析一个内置工具,但是这个结果不确定,取决于外部环境...高效基础R 改善性能标准方式和替代方法 if与ifelse函数 marks <- runif(n=10e6, min=30, max=99) system.time({ result1 <- ifelse...哪个索引是TRUE which() 将因子转换成数值 逻辑AND与OR &和|是向量,非向量版本&&和||,只在必要情况下执行第二个条件,注意不要使用它们操作向量。...稀疏矩阵 仅保存非0对象 并行计算 library(parallel) detectCores() # 8 apply函数并行版本 parapply() 等,多了一个cl函数指定CPU个数。...Rcpp C++是一个现代、快速并具有较强支持度语言,包含各种库。Rcpp提供了一个友好API,编写高性能代码,C++中瓶颈典型是地址循环与递归函数

1.3K40

Matlab中短时傅里叶变换 spectrogram和stft用法

短时傅里叶变换基本原理就是将数据分段加窗,做fft,在分段时会有overlap,因此一个向量短时傅里叶变换结果是一个矩阵。了解了这点,下面的函数及参数就更加容易理解了。...,如果window值是一个整数,那么被分段x每一段长度都等于window,并采用默认Hamming窗;如果window是一个向量,那么被分段后每一段长度都等于length(window),且输入向量即为所要加函数...2整数次幂; fs表示采样率,用来归一化显示使用; f表示显示频谱范围,f是一个向量长度跟s行数相同; 当x是实信号且nfft为偶数,s行数为(nfft/2+1) 当x是实信号且nfft为奇数...,s行数为(nfft+1)/2 当x是复信号,s行数为nfft 当在输入参数列表中指定f后,函数会在f指定频率处计算频谱图,返回f跟输入f是相同; t表示显示时间范围,是一个向量长度跟...在这里插入图片描述 noverlap默认是50%,现在我们把它设为window长度减1,即每次步进为1 s = spectrogram(sig, 256, 255); t = linspace(0

4.2K20

小论线性变换

EIG分解 特征值分解适应情况是: 矩阵是方阵 矩阵有足够特征向量 如果矩阵有不相同特征值 ,那么肯定有足够特征向量 对角矩阵本质上是每个轴上不耦合地伸缩。...参考代码 % 画图辅助函数 function [] = px(X,p1,p2) plot(X(1,:),X(2,:),p1) hold on plot(X(1,:),X(2,:),p2) hold off...axis equal %axis([0 2 0 2]) % 主函数 %% 耦合与解耦 X = [0 0 1 1 0 0 1 1 0 0]; % 对角矩阵 A2 = [1 0 0 2]...% 对称矩阵就像对角矩阵那样 % 更深刻地去理解特征值与特征向量 % 特征值本质上是找到了一组完整不缺失特征向量后,可以进行解耦地伸缩变换,每个基上伸缩变换系数 % 如果和压缩联系在一起的话,如果特征向量长度都一样...5) mean((D(2,2)*Xnew(2,:) - Xnew2(2,:) ) < 1e-5) %% 如何将不能对角化矩阵对角化,不存在奇异值为0情况,矩阵是方阵 % SVD,构建起两个不同坐标基

77070

R语言性能Tips和GC

R会在内存不够用(要去读C代码自动调用gc释放内存。这一点和JAVA类似。这一点和编译语言C/Cpp有非常大区别,后者要用户手动free或者析构(~Class())。...4.将业务和问题域代码学会使用算法,不仅是机器学习算法还是传统算法,将时间复杂度和空间复杂度降到最低。 5.能上RcppRcpp,对C要有信心,语言就是一种工具;学会使用MPI克服多进程管理。...利用内置向量函数,比如exp、sin、rowMeans、rowSums、colSums、ifelse等 利用Vectorize函数将非向量函数改装为向量函数 函数族:apply、lapply...所以利用R内置向量函数,自定义向量函数,只要在函数定义每个运算是向量。(利用rowMeans、rowSums、colSums、colMeans等函数对矩阵或数据库做整体处理)。...如果我们在函数定义加了逻辑判断表达式会破坏向量化计算

1.7K00

Numpy中Meshgrid函数介绍及2种应用场景

Meshgrid函数基本用法 在Numpy官方文章里,meshgrid函数英文描述也显得文绉绉,理解起来有些难度。 可以这么理解,meshgrid函数用两个坐标轴上点在平面上画网格。...,可用来计算三变量函数和绘制三维立体图 这里,主要以[X,Y]=meshgrid(x,y)为例,来对该函数进行介绍。...[X,Y] = meshgrid(x,y) 将向量x和y定义区域转换成矩阵X和Y,其中矩阵X向量向量x简单复制,而矩阵Y向量向量y简单复制(注:下面代码中X和Y均是数组,在文中统一称为矩阵了...假设x是长度为m向量,y是长度为n向量,则最终生成矩阵X和Y维度都是 n*m (注意不是m*n)。...m, n = (5, 3) x = np.linspace(0, 1, m) y = np.linspace(0, 1, n) X, Y = np.meshgrid(x,y) 查看向量x和向量y x

2.1K21
领券