首页 > 编程语言 >matlab练习程序(box-cox变换)

matlab练习程序(box-cox变换)

时间:2022-10-29 13:00:25浏览次数:73  
标签:box 变换 cox re newy matlab lambda

box-cox变换可以将非正态分布的数据变换到正态分布。

变换公式如下:

其中lambda是待求参数。

这里就遍历可能的lambda值,得到变换后的数据,再通过sw正态分布检验,选取最好的lambda值。

matlab代码如下:

clear all;close all;clc

y = chi2rnd(5,1500,1);                  %自由度5的卡方分布1500个数
histogram(y,50);

maxp = -1;
re_y=[];
re_lambda=0;
for lambda=-3:0.01:3
    if lambda==0                        %box-cox变换
        newy = log(y);
    else
        newy = (y.^lambda-1)./lambda;
    end
    [~,p,~] = swtest(newy);             %Shapiro-Wilk正态分布检验
    
    if p > maxp
        maxp = p;
        re_y = newy;
        re_lambda = lambda;
    end
end

figure;
histogram(re_y,50);

其中swtest函数比较长,在这里下载

结果如下:

原数据:

变换后:

标签:box,变换,cox,re,newy,matlab,lambda
From: https://www.cnblogs.com/tiandsp/p/16838517.html

相关文章

  • C++创建桌面应用程序:处理对话框DialogBox
    VS2019新建C++桌面向导://Project1.cpp:定义应用程序的入口点。//#include"framework.h"#include"Project1.h"INT_PTRDlgproc(HWNDhwndDlg,UINTuMsg,WPARAMwParam......
  • 第5题:试设计一巴特沃斯低通滤波器,其处理的数据采样率为2Hz,允许0.6Hz以下的信号通过。
    首先对题目进行分析,采样率为2Hz,允许0.6Hz以下信号通过说明该滤波器的截止频率为0.6,也就是幅频增益下降3dB或者是最大幅频增益的0.707倍(对应的是根号2分之一)题目的意思应该......
  • SIR模型实现(matlab)
     matlab代码   clcclearcloseall;A=0.4;B=0.1;I=0.4;S=0.5; %odetspan=[050];y0=[IS];[t,y]=ode45(@(t,y)odefun(t,y,A,B),tspan,y0);r=......
  • Matlab 之 find()函数
    Matlab之find()函数 当我第一次用matlab语言编写一个工程项目时,发现自己编写的脚本里循环特别多,导致编程效率很低,这让我特别苦恼。有一次导师让我阅读他编写的......
  • delphi 避免两个联动的COMBOBOX进入死循环
      当物料类型为刀具仓时,单位自动修改为粒 当物料类型为原料仓时,单位自动修改为公斤反之亦然.这是两个相互联动的控件,如果直接写的话,会直接死循环.如何......
  • 基于Matlab的FIR滤波器设计与实现
    一、摘要前面一篇文章介绍了通过FDATool工具箱实现滤波器的设计,见“基于Matlab中FDATool工具箱的滤波器设计及相关文件的生成”,这里通过几个例子说明采用Matlab语言设......
  • CSS盒子 模型(box-model)
    盒子模型(box-model)CSS处理网页时,它认为每个标签都包含在一个不可见的盒子里。如果把所有的标签都想象成盒子,那么我们对网页的布局就相当于是摆放盒子。我们只需要将相......
  • 基于BP/GRNN神经网络的安全性数据预测matlab仿真
    目录一、理论基础二、核心程序三、测试结果作者ID :fpga和matlabCSDN主页:https://blog.csdn.net/ccsss22?type=blog擅长技术:1.无线基带,无线图传,编解码 2.机器视觉,......
  • 【Matlab】 读取文件各种方法
    本技术支持指南主要处理:ASCII,binary,andMATfiles.要得到MATLAB中可用来读写各种文件格式的完全函数列表,可以键入以下命令:helpiofunMATLAB中有两种文件I/O程序:highle......
  • Matlab GUI界面
      从简单的例子说起吧。  创建MatlabGUI界面通常有两种方式:  1,使用.m文件直接动态添加控件   2. 使用GUIDE快速的生成GUI界面显然第二种可视化编辑方......