p value的matlab程序_matlab计算p value - CSDN
精华内容
参与话题
  • P-value

    千次阅读 2018-11-21 20:26:16
    P值在数学上对应着分位数方程; 应用(百度百科) 统计学根据显著性检验方法所得到的P 值,一般以P < 0.05 为显著, P <0.01 为非常显著,其含义是样本间的差异由抽样误差所致的概率小于0.05 或0.01...

    P值在数学上对应着分位数方程;

    应用(百度百科)

    统计学根据显著性检验方法所得到的P 值,一般以P < 0.05 为显著, P <0.01 为非常显著,其含义是样本间的差异由抽样误差所致的概率小于0.05 或0.01。实际上,P 值不能赋予数据任何重要性,只能说明某事件发生的机率。P < 0.01 时样本间的差异比P < 0.05 时更大,这种说法是错误的。统计结果中显示Pr > F,也可写成Pr( >F),P = P{ F0.05 > F}或P = P{ F0.01 > F}。

    P值的意义

    1. P值是一种概率,一种在原假设为真的前提下出现观察样本以及更极端情况的概率。

    2. 拒绝原假设的最小显著性水平

    3. 观察到的(实例的) 显著性水平。

    4. 表示对原假设的支持程度,是用于确定是否应该拒绝原假设的另一种方法。

    展开全文
  • 模拟退火算法matlab求函数最大值实例 模拟退火算法的思路基本上是: 1.粒子按照不同的概率在不同的方向漂移(随机运动) 2.向目标点漂移的概率更大(趋向于能量低的点) 3.随着时间的推移粒子每次漂移的步长变短...

    模拟退火算法matlab求函数最大值实例

    模拟退火算法的思路基本上是:

    1.粒子按照不同的概率在不同的方向漂移(随机运动)

    2.向目标点漂移的概率更大(趋向于能量低的点)

    3.随着时间的推移粒子每次漂移的步长变短(温度降低)


    这里粒子的速度采用正态分布,正态分布的速度的平均值与温度成正比

    粒子运动方向随机,+-方向运动概率为0.5


    %模拟退火算法实现搜索函数最大值
    %Anneal.m
    N=20;%粒子数量
    temp=20;%初始温度
    T=200;%迭代次数
    k=0.1;%温度位移系数
    kt=0.05;%温度概率系数
    de=0.99;%温度降低速率
    minx=0;
    maxx=10;%区间
    location=10*rand(1,N);%粒子初始位置
    present_value=equation(location);%粒子当前解
    %---------------------------
    for t=1:T
        %
        dx_av=k*temp;%当前温度下粒子平均移动距离
        probability=exp(-1/(kt*temp));
        disp(probability);
        temp=temp*de;%温度变化
        for p=1:N
            dx=0.5*dx_av*randn+dx_av;%以平均移动距离为中心正态分布,
            if rand>0.5    %0.5的概率为-
                dx=-dx;
            end
            local=location(p)+dx;
            if (local<maxx)&&(local>minx)%判断是否越界
                local_value=equation(local);
                if local_value>present_value(p)
                    location(p)=local;
                    present_value(p)=local_value;
                else if rand<probability
                        location(p)=local;
                        present_value(p)=local_value;   
                    end
                    
                end
            end
        end
    end


    x=minx:0.01:maxx;
    y=equation(x);
    plot(x,y);
    hold on;
    plot(location, present_value,'*');
    disp(location);

    被搜寻的函数如下·

    function y=equation(x)
    y=10*cos(0.4*pi*x).*sin(0.1*pi*x);
    end


    展开全文
  • 决策树算法 MATLAB 简单实现

    千次阅读 多人点赞 2019-05-20 21:54:35
    决策树算法 前言 最近在数据挖掘与机器学习的课程上刚刚学到了决策树...文章目录决策树算法前言1 算法流程2 程序设计3 MATLAB 中的调用4 Python 中的调用 1 算法流程 通过阅读机器学习的书籍首先了解决策树算法的基...

    决策树算法

    前言

    最近在数据挖掘与机器学习的课程上刚刚学到了决策树算法,于是,想自己用 MATLAB 简单实现一下。虽然拿其中最简单算法的进行实现,但是,从构思–编写–初步完成,也花费了不少时间,毕竟只有动手编写,才能真正体会到算法的内涵。

    1 算法流程

    通过阅读机器学习的书籍首先了解决策树算法的基本思想:通过递归的方式构建一棵树,子树是通过选取某一属性,按照其属性值进行划分产生的。其算法伪代码如下:

    在这里插入图片描述

    2 程序设计

    程序设计必须对算法的每个细节都要搞清楚,有时可能要实现一个健全完善的算法很困难,我们可以对算法进行简化,忽略复杂的情况,比如,在上面的构建决策树算法的步骤中,子树的划分可能有多个输出,连续属性和无序离散属性的划分的方法也有所不同,如果都要将这些考虑进去程序的设计难度会很大。作为初学者,可以对问题进行简化:

    • 假设无序离散属性都只是二元属性,属性值用0或1表示
    • 类别只有两类,用0或1表示
    • 每个节点只有两个输出

    在明确了细节之后,还需考虑另外一个问题:数据结构。在程序中用什么数据结构来描述所构建的“树”?这一步很关键,因为在对训练集之外的记录进行测试的时候要用到该数据结构。

    由于自己实现决策树算法的目的只是加深对算法的理解,并不是实际开发,因此,只是将“树”的结构和参数打印出来。

    function build_tree(x, y, L, level, parent_y, sig, p_value)
    % 自编的用于构建决策树的简单程序,适用于属性为二元属性,二分类情况。(也可对程序进行修改以适用连续属性)。
    % 输入:
    % x:数值矩阵,样本属性记录(每一行为一个样本)
    % y:数值向量,样本对应的labels
    % 其它参数调用时可以忽略,在递归时起作用。
    % 输出:打印决策树。
        if nargin == 2
           level = 0; 
           parent_y = -1;
           L = 1:size(x, 2);
           sig = -1;
           p_value = [];
    %        bin_f = zeros(size(x, 2), 1);
    %        for k=1:size(x, 2)
    %            if length(unique(x(:,k))) == 2
    %               bin_f(k) = 1; 
    %            end
    %        end
        end
        class = [0, 1];
        [r, label] = is_leaf(x, y, parent_y); % 判断是否是叶子节点
        if r   
            if sig ==-1
                disp([repmat('     ', 1, level), 'leaf (', num2str(label), ')']);
            elseif sig ==0
                disp([repmat('     ', 1, level), '<', num2str(p_value),' leaf (', num2str(label), ')']);
            else
                disp([repmat('     ', 1, level), '>', num2str(p_value),' leaf (', num2str(label), ')']);
            end
        else
            [ind, value, i_] = find_best_test(x, y, L); % 找出最佳的测试值
    %         
    %         if ind ==1
    %            keyboard; 
    %         end
            
            [x1, y1, x2, y2] = split_(x, y, i_, value); % 实施划分
            if sig ==-1
                disp([repmat('     ', 1, level), 'node (', num2str(ind), ', ', num2str(value), ')']);
            elseif sig ==0
                disp([repmat('     ', 1, level), '<', num2str(p_value),' node (', num2str(ind), ', ', num2str(value), ')']);
            else
                disp([repmat('     ', 1, level), '>', num2str(p_value),' node (', num2str(ind), ', ', num2str(value), ')']);
            end
    %         if bin_f(i_) == 1
                x1(:,i_) = []; 
                x2(:,i_) = [];
                L(:,i_) = [];
    %             bin_f(i_) = [];
    %         end
            build_tree(x1, y1, L, level+1, y, 0, value); % 地柜调用
            build_tree(x2, y2, L, level+1, y, 1, value);
        end
    
        function [ind, value, i_] = find_best_test(xx, yy, LL) % 子函数:找出最佳测试值(可以对连续属性适用)
            imp_min = inf;
            i_ = 1;
            ind = LL(i_);
            for i=1:size(xx,2);
                if length(unique(xx(:,i))) ==1
                    continue;
                end
    %            [xx_sorted, ii] = sortrows(xx, i); 
    %            yy_sorted = yy(ii, :);
               vv = unique(xx(:,i));
               imp_min_i = inf;
               best_point = mean([vv(1), vv(2)]);
               value = best_point;
               for j = 1:length(vv)-1
                   point = mean([vv(j), vv(j+1)]);               
                   [xx1, yy1, xx2, yy2] = split_(xx, yy, i, point);
                   imp = calc_imp(yy1, yy2);
                   if imp<imp_min_i
                       best_point = point;
                       imp_min_i = imp;
                   end
               end
               if imp_min_i < imp_min
                  value = best_point;
                  imp_min = imp_min_i;
                  i_ = i;
                  ind = LL(i_);
               end
            end
        end
        
        function imp = calc_imp(y1, y2) % 子函数:计算熵
            p11 = sum(y1==class(1))/length(y1);
            p12 = sum(y1==class(2))/length(y1);
            p21 = sum(y2==class(1))/length(y2);
            p22 = sum(y2==class(2))/length(y2);
            if p11==0
                t11 = 0;
            else
               t11 = p11*log2(p11); 
            end
            if p12==0
                t12 = 0;
            else
               t12 = p12*log2(p12); 
            end
            if p21==0
                t21 = 0;
            else
               t21 = p21*log2(p21); 
            end
            if p22==0
                t22 = 0;
            else
               t22 = p22*log2(p22); 
            end
            
            imp = -t11-t12-t21-t22;
        end
    
        function [x1, y1, x2, y2] = split_(x, y, i, point) % 子函数:实施划分
           index = (x(:,i)<point);
           x1 = x(index,:);
           y1 = y(index,:);
           x2 = x(~index,:);
           y2 = y(~index,:);
        end
        
        function [r, label] = is_leaf(xx, yy, parent_yy) % 子函数:判断是否是叶子节点
            if isempty(xx)
                r = true;
                label = mode(parent_yy);
            elseif length(unique(yy)) == 1
                r = true;
                label = unique(yy);
            else
                t = xx - repmat(xx(1,:),size(xx, 1), 1);
                if all(all(t ==0))
                    r = true;
                    label = mode(yy);
                else
                    r = false;
                    label = [];
                end
            end
        end
    end
    

    利用MATLAB提供的数据集进行测试,并与 MATLAB 自身提供的决策树分类的函数进行对比。

    clc
    clear all
    load ionosphere % contains X and Y variables
    x = X(:,1:3);
    ind = x(:,3)>0;
    x(ind,3) = 1;
    x(~ind,3) = 0;
    
    y = zeros(size(Y));
    y(ismember(Y, 'b')) = 1;
    
    ctree = fitctree(x, y);
    view(ctree,'mode','graph') % graphic description
    % [label, score] = predict(ctree, X(5,:))
    
    build_tree(x, y);
    

    自编程序运行结果

    含义说明:

    node(属性序号, 划分点)

    leaf(类别)

    在这里插入图片描述

    MATLAB提供的函数的运行结果

    在这里插入图片描述

    结果与MATLAB中自己实现的函数运行结果相同。

    3 MATLAB 中的调用

    自己对算法的实现的目的主要还是用于加深对算法的理解,但是在实际应用时,还得借助成熟的机器学习工具包,比如MATLAB或Python提供的机器学习工具包。下面介绍一下MATLAB中决策树算法的相关函数的调用方法。

    tree = fitctree(x,y) 
    tree = fitctree(x,y,Name,Value)
    

    根据给定的记录的属性x,对应类别y,构造决策树(二叉树)。要求x为数值矩阵,y为数值向量或cell数组。name-value pair 为可选参数,用于指定算法的参数(划分准则,叶子节点最少记录值等)。x, y 每一行为一个样本。

    返回tree为决策树的数据结构。

    利用tree进行分类:

    label = predict(tree, x)
    

    4 Python 中的调用

    scikit-learn 库提供了决策树分类和回归的方法.

    训练

    >>> from sklearn import tree
    >>> X = [[0, 0], [1, 1]]
    >>> Y = [0, 1]
    >>> clf = tree.DecisionTreeClassifier()
    >>> clf = clf.fit(X, Y)
    

    分类

    >>> clf.predict([[2., 2.]])
    array([1])
    

    DecisionTreeClassifier能够进行二元分类(标签为[- 1,1])和多类分类(标签为[0,…,K-1])。

    展开全文
  • MATLAB制作炫酷动图

    千次阅读 2018-11-29 10:07:18
    MATLAB制作炫酷动图前言问题分析代码实现效果展示 前言 之前看到好多网站有那种炫酷的动图,就希望自己用代码实现一下。参考网页:http://rscup.eyecool.cn/。是不是特别炫酷? 问题分析 动图的每一帧都是由点和线...

    前言

    之前看到好多网站有那种炫酷的动图,就希望自己用代码实现一下。参考网页:http://rscup.eyecool.cn/。
    是不是特别炫酷?

    问题分析

    动图的每一帧都是由点和线构成。首先分析点。可以看到,每个点的位置都在变化,匀速向某个方向运动,最后消失在边界。每个点的运动方向是随机的。
    两点之间连线。线的亮度随与这两点之间距离有关:距离越大,则线越暗。当距离大于某一阈值,则不再连线。

    代码实现

    % desktop_play.m
    %=========================================================================
    % by Qian Song Nov. 28 2018
    %=========================================================================
    num = 30;
    max_value = 500;
    p = randi(300,num,2)+100;
    max_dis = sqrt(max_value^2*2);
    dis_mat = zeros(num,num);
    
    fg = figure;
    for m  = 1:20
        delta = randi(3,num,2).*randsrc(num,2);
        for i = 1:50 
            p = p + delta;
            p(p<1) = 1;
            p(p>max_value) = max_value;
            for k = 1:num
                dis_mat(k,:) = sqrt((p(k,1) - p(:,1)).^2 + (p(k,2) - p(:,2)).^2);
            end
            dis_mat = dis_mat./max(dis_mat(:));
    
            clf
            patch([0 max_value max_value 0], [0 0 max_value max_value], [0 0 0])
            for k = 1:num
                for j = k+1:num
                    hold on
                    if(dis_mat(k,j)<0.25)
                        plot(p([k,j],1),p([k,j],2),'-o','Color',[1 1 1].*(1-dis_mat(k,j).*4));
                    end
                end
            end
            axis([1 max_value 1 max_value])
            pause(0.1)
        end
    end
    

    效果展示

    示例图

    添加反射机制

    当点运动到边界时,添加反射:

    delta(p<1 | p>max_value) = -delta(p<1 | p>max_value);
    

    所有代码如下:

    
    
    % desktop_play.m
    %=========================================================================
    % by Qian Song Nov. 28 2018
    %=========================================================================
    num = 50;
    max_value = 500;
    p = randi(300,num,2)+100;
    max_dis = sqrt(max_value^2*2);
    dis_mat = zeros(num,num);
    
    fg = figure;
    for m  = 1:20
        delta = randi(3,num,2).*randsrc(num,2);
        for i = 1:50 
            p = p + delta;
            delta(p<1 | p>max_value) = -delta(p<1 | p>max_value);
            p(p<1) = 1;        
            p(p>max_value) = max_value;
            for k = 1:num
                dis_mat(k,:) = sqrt((p(k,1) - p(:,1)).^2 + (p(k,2) - p(:,2)).^2);
            end
            dis_mat = dis_mat./max(dis_mat(:));
    
            clf
            patch([0 max_value max_value 0], [0 0 max_value max_value], [0 0 0])
            for k = 1:num
                for j = k+1:num
                    hold on
                    if(dis_mat(k,j)<0.2)
                        plot(p([k,j],1),p([k,j],2),'-o','Color',[1 1 1].*(1-dis_mat(k,j).*5));
                    end
                end
            end
            axis([1 max_value 1 max_value])
            pause(0.001)
        end
    end
    
    展开全文
  • MATLAB ttest和ttest2

    千次阅读 2018-08-20 17:03:03
    其中实现第一二种检验的是ttest,第二种检验的是ttest2; ttest使用方法如下: 检验某个样本均值是否等于某个值: h = ttest(x)example h = ttest(x,m) h = ttest(x,m,Name,Value) [h,p] =...
  • 这个小程序主要实现了输入n次交易和p个物品,随机产生n行p列的购物清单。其中p值最大不能超过30列,因为我设计的编码数组最大只有30列。1、产生购物清单的程序代码:function T=produce_T(n,p) % 产生随机交易矩阵 T...
  • FDR校正的程序实现及严格程度对比

    万次阅读 2019-04-08 21:32:57
    FDR校正的程序实现及严格程度对比 前言 做统计分析就离不开P value<0.05,而写过科研文章的人也都知道没有经过FDR校正的P值就像一盘散沙,不用风吹,走两步自个儿就散了。那么FDR校正这个让人又爱又恨的...
  • matlab2c开发全解教程matlab2c调用方法:1、下载matlab2c动态链接库 2、将matlab2c.dll、matlab2c.lib和matlab2c.h放到项目头文件目录下 3、在cpp文件中引入下面的代码#include "Matlab2c.h" #pra
  • Matlab_回归分析_逐步回归

    万次阅读 多人点赞 2017-07-30 11:36:46
    例: (Hald,1960)Hald 数据是关于水泥生产的数据。某种水泥在凝固时放出的热量 Y(单位:卡/克)与水泥中 4 种化学成品所占的百分比有关: 在生产中测得 12 组数据,见表5,试建立 Y 关于这些因子的“最优”回归...
  • 原来做配对或是双样本t检验的时候,都是用的matlab里面自带的ttest、ttest2来解决,但是遇到一些文献里面,有z检验是在R语言环境下编写的,但是如何在matlab 中用z检验呢? 一、相关系数Fisher z-transform Fisher z...
  • 根据数值求其在序列中的位置索引

    千次阅读 2014-09-21 21:18:19
    根据数值求其在序列中的位置索引
  • matlab 使用定时器timer

    万次阅读 2015-05-21 16:43:57
    今天用matlab 定时器,写存储图片程序, 设置了半天都没有反应,百度发现,原来少写了 start ,晕死2333333333333 定时器运用全步骤: 1、Create a timer object. t = timer('StartDela
  • function [cm, cSq] = DiscreteFrechetDist(P,Q,dfcn) plot(P)%绘制曲线P plot(Q)%绘制曲线Q sP = size(P); sQ = size(Q); % check validity of inputs if sP(2)~=sQ(2) error('Curves P and Q must be of the ...
  • 在开始学习机器学习和数据挖掘的过程中,我的导师让我看了一篇关于聚类的论文 A testing based extraction algorithm ...导师说等我看明白之后就可以编程实现,我看了不到两周,然后试着用 Matlab 实现这个算法。在实现
  • 题目:自定义函数实现对灰度图像的直方图均衡化(即MATLAB内置函数histeq的功能)。要求呈现原图和处理后的图像对比,以及灰度值转换方程的图像。 函数原型: function [enhancedIm, transFunc] = ...
  • matlab之串口数据采集绘图

    万次阅读 2016-09-30 11:43:23
    实现数据显示绘图功能,使用M脚本文件和M函数文件。 第一个文件连接串口和打开串口,设置了串口的一些参数和触发事件。连接串口COM3。 第二个文件是回调函数,相当于其他语言中例如C语言的中断函数 第一个...
  • 最近在学习MATLAB中求解有效前沿的函数时,发现由于MATLAB移除了部分或全部函数,网上大部分的案例已经无法应用,例如较为常用的froncon全部被移除,portopt由于不再接受Conset参数,已经无法实现资产约束条件下的...
  • matlab中hash和map的用法总结

    千次阅读 2015-04-19 19:55:20
    若要在matlab中使用hash,有两种方式: (1)采用matlab官方给出的结构类型map(containers.Map): http://cn.mathworks.com/help/matlab/map-containers.html (2)调用Java中的hashmap或者hashtable ...
  • 问题描述用GUI方式编程实现一个频率在100-500Hz,幅值在0-2000,相位0-180度可变的正弦波信号,信号采样率为5120Hz核心代码function slider1_Callback(hObject, eventdata, handles)f=get(handles.slider1,'Value');...
  • 数据挖掘初入门--matlab入门

    千次阅读 2017-03-05 16:08:48
    新手刚刚接触数据挖掘,数据挖掘的实现工具选择了适合于高效自主算法开发的matlab。 此次试验利用matlab进行一个股票价值风险评估的小实验。 首先应该明白一点的是科学计算的流程应该是获取数据,数据探索和建模,...
1 2 3 4 5 ... 20
收藏数 7,725
精华内容 3,090
关键字:

p value的matlab程序