精华内容
下载资源
问答
  • 大部分科研搬砖者们都会进行假设检验,算出P值,如果P值小于0.05,我们就说两者之间有显著性差异。那么你真的了解P值君,到底是啥吗?下面和小编一起走进统计学的世界吧,让你的数据分析地更有理有据,文章看起来...

    6204da888c0c204951148f01da0824ac.png

    几乎每篇实验性的科研论文里都要有对照组和实验组,我们往往也是将实验组和对照组相比,看看性能是变好了还是变差了,有没有显著性差异呢?大部分科研搬砖者们都会进行假设检验,求算出P值,如果P值小于0.05, 我们就说两者之间有显著性差异。那么你真的了解P值君,到底是啥吗?下面和小编一起走进统计学的世界吧,让你的数据分析地更有理有据,文章看起来更高大上哦!

    80042499f020c63f8a30857fe0fa5f61.png

    上图是一片文章里关于数据统计学代表性的说明。一般任何一篇实验性的论文里,都要有统计学分析这一模块。也就是说你不能只做一组实验,只测一个数据,就去说这个产品或者实验结果好不好,这样是没有说服力的。因此,一般的科研论文里,每组数据至少是三个样本量,再对比组分之间的差异。有些教授更注重数据的真实性和再现性,因此可能会让第二个学生来重复你的实验,看是否能得到相同的结果。总之,就是说我们科研论文里的数据要有统计学意义,要能反映真实的水平。上图论文里的统计学分析也是目前用的最多的一种简单的分析,大意是所有的数据是从三个独立的实验中得到的,并且数据的呈现方式是平均值±标准偏差的方式。使用的单因子ANOVA方差分析的方式求算P值,若P值小于0.05,则会被认为是具有显著性差异。

    那么上述中的P值具体是什么呢?且听笔者娓娓道来。

    现代统计学可分为统计描述和统计推断两个部分。统计描述简单来说,就是把数据按一定的方式呈现,求算平均值、中位数,看看数据处于什么水平。标准差就是用来看数据波动的程度。当然也可以用柱状图,箱线图,散点图等统计图形来更为形象直观地展示。而统计推断是用我们手中的样本数据来推断其背后的总体特征,分为参数估计和假设检验两大部分。

    参数估计是利用样本的统计量去估计总体的参数,比如说用样本的平均数去估算整体的平均值。考虑到抽样误差,一般我们会用一个范围,而不是一个单一的值去估计总体参数,此即所谓的区间估计。

    假设检验则是利用小概率反正法思想,从问题的对立面(H0,原假设)出发,假定H0成立的条件下,去计算检验统计量,获得P值,再通过P值来在H0,H1(备择假设)之间做进一步取舍。因此,P值就是在H0为真的条件下,获得当前样本或者更偏的样本的概率。我们举个例子,比如说我们假设实验组和对照组两者均值相等,根据假设检验求算出P值小于0.05,这也就说明只有5%不到的概率表示原假设(实验组和对照组两者均值相等)成立,介于这概率太低,那么也就能说明原假设应该是不成立的,也就是实验组和对照组两者均值不相等,有显著性差异。

    了解了P值之后,要了解假设检验的方法。下表给出了统计学中常用的假设检验的方法。

    数据类型

    均值

    等方差检验

    正态分布数据

    非正态分布数据

    正态分布数据

    非正态分布数据

    单总体

    偏差已知,使用Z检验;偏差未知,使用T检验

    中位数检验

    卡方检验

    Bonett检验

    双总体

    双T检验或配对检验

    Mann- Whitney检验

    F检验

    Levene检验

    多总体

    方差分析

    Kruskal-walls检验法、Mood中位数检验法、Fredman检验法

    Bonett检验

    Levene检验

    看到复杂的上表,千万不要头疼,我们一般使用较多的便是多总体的方差分析的方法,来比较实验组与对照组之间是否有显著性差异。而方差分析,一般利用origin\graphpad\minitab,甚至EXCEL都是有公式能够进行计算的。

    下面来看看处理好数据之后,如何把数据展示出来吧。大家也都知道,好的杂志发表的顶尖文章里,配图和实验数据的展示也都是一流的。下图是一篇论文里展示数据的方式,可以发现作者用柱状图的形式,将各组数据的平均值及偏差表示出来,又两两对比是否存在显著性差异。*代表两者之间P值小于0.05,**代表两者之间P值小于0.01,***代表两者之间P值小于0.001。这样我们便能很直观的了解到各组之间的数据水平及差异。

    d238927236fca61a28f3e85836edc20f.png

    上图是常见的科研论文里呈现数据的柱状图,我们一般使用ORIGIN或者Graphpad便可以画出来。下面,小编给大家介绍一个新软件,专门用来进行统计学分析及画图的软件-MINITAB。学好了,可以让你的数据处理地更专业,也能用更好的方式去呈现你的实验数据。

    首先,来看一下百度百科对Minitab软件的介绍吧。Minitab软件是现代质量管理统计的领先者,全球六西格玛实施的共同语言,以无可比拟的强大功能和简易的可视化操作深受广大质量学者和统计专家的青睐。Minitab 1972年成立于美国的宾夕法尼亚州州立大学(Pennsylvania State University),到目前为止,已经在全球100多个国家,4800多所高校被广泛使用。

    打开MINITAB的界面是下面这样的。

    35709ec910b8ad0c5d3f92edc661070c.png

    我们一般使用最多的两个功能,分别是统计与图形两个模块。

    8d8012b89a7fac67b8bb8d82364c2f64.png

    06c0f1427a4ebbcc63cbaea1611b2afa.png

    下面来到重点,介绍一下如何求算两组数据之间的P值以及如何画箱线图。首先,我们要确定这两组数据是不是正太分布,是不是等方差,根据我们上面列的表格,选择合适的假设检验的方法。

    ea4c6f300c14d430e65450cc9602069d.png

    上图实验组和对照组的数据,经计算是独立正态等方差的,因此我们选择双T假设检验的方法,求算出P值为0.002, 小于0.05,也就是说在95%的置信度下,实验组和对照组是有显著性差异的。

    双样本 T 检验和置信区间: 对照组, 实验组

    方法

    μ₁: 对照组 的均值

    µ₂: 实验组 的均值

    差值: μ₁ - µ₂

    未针对此分析假定等方差。

    描述性统计量

    样本

    N

    均值

    标准差

    均值标
    准误

    对照组

    5

    5.40

    2.07

    0.93

    实验组

    5

    11.200

    0.837

    0.37

    差值的估计值

    差值

    差值的 95%
    置信区间

    -5.80

    (-8.37, -3.23)

    检验

    原假设

    H₀: μ₁ - µ₂ = 0

    备择假设

    H₁: μ₁ - µ₂ ≠ 0

    T 值

    自由度

    P 值

    -5.80

    5

    0.002

    此外,我们也可以将这两组数据,画成箱线图,更直观地表示两组数据的分布情况。

    086de5904694ca93451553010c00187b.png

    Minitab是统计学及数据处理领域中功能非常强大的一款软件,如果大家有兴趣,可以再深层次地学习一下,能够对分析实验数据,对比差异性能提供更专业的技术支持。

    以上,就是今天介绍的统计学知识啦,现在你了解P值是什么了吗?实验论文中,我们一般的样本量大多为3个或5个,求算平均值及标准偏差。没有误差棒的数据图,是会被诟病的。 所以请大家千万要有数据统计的意识,保证你的实验数据是有代表性意义的。在进行统计学分析的时候,做到知其然并知其所以然!

    本文由作者杜老师供稿

    投稿邮箱

    tougao@cailiaoren.com

    投稿以及内容合作可加微信

    cailiaorenvip

    【计算服务】

    材料人重磅推出特色计算服务,为广大材料&化学科技工作者提供包括第一性原理计算、有限元计算、分子动力学计算、流体力学计算、相图计算等一系列材料计算代算服务,以及相关的计算指导、培训服务。如有需要,欢迎扫码添加客服咨询(微信号:cailiaoren001)

    694ab0e53da718f513764799c0a03883.png

    c3616622d84169d20cde153e372bcc27.png

    展开全文
  • <p>#include<stdio.h> int main() {int n;  while (scanf("%d",&n)!=EOF) {<!-- -->  int t=0,sum=0,a[1000];  for(int i=0; i<n; i++) ...
  • 给定个只包含加法和乘法的算术表达式,请你编程计算表达式的。 输入格式: 行,为需要你计算的表达式,表达式中只包含数字、加法运算符“ +++ ”和乘法运算符“ × \times × ”,且没有括号,所有参与运算...

    题目描述

    给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。

    输入格式:

    一行,为需要你计算的表达式,表达式中只包含数字、加法运算符“ +++ ”和乘法运算符“ × \times × ”,且没有括号,所有参与运算的数字均为 000 到 231−12^{31}-1231−1 之间的整数。

    输入数据保证这一行只有 0−9 0-90−9 、 +++ 、 × \times × 这 1212 12 种字符。

    输出格式:

     

    一个整数,表示这个表达式的值。

    注意:当答案长度多于 444 位时,请只输出最后 4 44 位,前导 0 00 不输出。

    输入样例:

    1+1*3+4
    

    输出样例:

    8

    输入样例:

    1+1234567890*1

    输出样例:

    7891

    输入样例:

    1+1000000003*1

    输出样例:

    4

    说明

    对于 30%30\%30% 的数据, 0≤0≤0≤ 表达式中加法运算符和乘法运算符的总数 ≤100≤100≤100 ;

    对于 80%80\%80% 的数据, 0≤0≤0≤ 表达式中加法运算符和乘法运算符的总数 ≤1000≤1000≤1000 ;

    对于 100%100\%100% 的数据, 0≤0≤0≤ 表达式中加法运算符和乘法运算符的总数 ≤100000≤100000≤100000 。

    思路:

    一边输入一边进行操作,可以用python2直接无脑 AC 可惜 NOIP没有python啊哈哈哈。

    具体看代码:

    // luogu-judger-enable-o2
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int main()
    {
        long long shu,sum=0,cj;//shu表示当前输入的数,cj为当前阶段的和
        char ch=0,newch;//ch为上一个运算符 newch为当前输入的运算符
        bool flag=1;
        while(flag)
        {
            scanf("%lld",&shu);
            flag=scanf("%c",&newch)==1?true:false;//当输入结束时,while结束
            if(ch==0) cj=shu;//如果刚开始输入,将阶段和置为当前数
            if(ch=='+') sum=(sum+cj)%10000,cj=shu;//如果是+号,进行加法操作
            if(ch=='*') cj=(cj*shu)%10000;//如果是乘号,进行乘法运算
            if(!flag) sum=(sum+cj)%10000;//最后一次操作
            ch=newch;//每次输入后把旧运算符每次更新
        }
        printf("%lld",sum);//输出
    }

     

    展开全文
  • )就像进行数据处理的时候,有时会遇到极值(最大、最小值)、平均、中位数和四分位数(25%、 75%)的情况。 这篇博客就是你的福音,让你绝对0基础使用python 进行数据分析。 1、下载py的环境。 这里引用...
  • 牛客 14402 最大

    2020-09-12 22:19:35
    本题包含多输入,每输入第个数字n,表示序列的长度。 然后接下来行输入n个数,表示原先序列的样子。 再接下来个数字Q,表示需要进行的操作的次数。 最后Q行每行两个元素p,y,表示本操作需要将...

    牛客 14402 求最大值

    题目链接

    题目描述

    给出一个序列,你的任务是求每次操作之后序列中 (a[j]-a[i])/(j-i)【1<=i<j<=n】的最大值。
    操作次数有Q次,每次操作需要将位子p处的数字变成y.

    输入描述:

    本题包含多组输入,每组输入第一行一个数字n,表示序列的长度。
    然后接下来一行输入n个数,表示原先序列的样子。
    再接下来一行一个数字Q,表示需要进行的操作的次数。
    最后Q行每行两个元素p,y,表示本操作需要将位子p处的数字变成y.
    数据范围:
    3<=n<=200000
    1<=Q<=200000
    -1000000000<=a[i]<=1000000000

    输出描述:

    每组数据输出Q行,每行输出一个浮点数,保留两位小数,表示所求的最大值。

    示例1

    输入

    5
    2 4 6 8 10
    2
    2 5
    4 9
    

    输出

    3.00
    3.00
    

    最大值就是相邻两数的最大差值,用线段树查询区间最大值即可,AC代码如下:

    #include "bits/stdc++.h"
    using namespace std;
    typedef long long ll;
    const int N=2e5+5;
    int n,m,x,y;
    int k,tree[N<<2],a[N],b[N];
    void pushup(int i)
    {
        tree[i]=max(tree[i<<1],tree[i<<1|1]);
    }
    
    void build(int i,int l,int r)
    {
        if(l==r)
        {
            tree[i]=b[l];
            return ;
        }
        int mid=l+(r-l)/2;
        build(i<<1,l,mid);
        build(i<<1|1,mid+1,r);
        pushup(i);
    }
    
    void update(int i,int l,int r,int m,int n,int k)
    {
        if(m<=l&&r<=n)
        {
            tree[i]=k;
            return ;
        }
        int mid=l+(r-l)/2;
        if(m<=mid) update(i<<1,l,mid,m,n,k);
        if(n>mid) update(i<<1|1,mid+1,r,m,n,k);
        pushup(i);
    }
    
    int main(){
        while(~scanf("%d",&n)) {
            for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
            for (int i = 1; i <= n - 1; i++) b[i] = a[i + 1] - a[i];
            build(1, 1, n - 1);
            scanf("%d", &m);
            while (m--) {
                scanf("%d%d", &x, &y);
                a[x] = y;
                b[x] = a[x + 1] - a[x];
                b[x - 1] = a[x] - a[x - 1];
                if (x - 1 >= 1) update(1, 1, n - 1, x - 1, x - 1, b[x - 1]);
                if (x <= n - 1) update(1, 1, n - 1, x, x, b[x]);
                printf("%d.00\n", tree[1]);
            }
        }
        return 0;
    }
    
    展开全文
  • 后缀式求值

    2019-10-07 18:48:04
    希望看到博客的同学能够告诉我为什么个200的数组装得下的数据个栈装不下 我们人类习惯于书写“中缀式”,如 3 + 5 * 2 ,其为13。 (p.s. 为什么人类习惯中缀式呢?是因为中缀式比后缀式好用么?) 而计算机...

    PTA 后缀式求值

    希望看到博客的同学能够告诉我为什么一个200的数组装得下的数据,一个栈装不下
    我们人类习惯于书写“中缀式”,如 3 + 5 * 2 ,其值为13。 (p.s. 为什么人类习惯中缀式呢?是因为中缀式比后缀式好用么?)
    而计算机更加习惯“后缀式”(也叫“逆波兰式”,Reverse Polish Notation)。上述中缀式对应的后缀式是:
    3 5 2 * +
    现在,请对输入的后缀式进行求值。
    输入格式:
    在一行中输入一个后缀式,运算数和运算符之间用空格分隔,运算数长度不超过6位,运算符仅有+ - * / 四种。
    输出格式:

    • 在一行中输出后缀式的值,保留一位小数。

    输入样例:

    • 3 5.4 2.2 * +

    输出样例:

    • 14.9

    第一个点老是过不去,像我一下这样写,我很不解:

    #include <bits/stdc++.h>
    using namespace std;
    float a[200];
    float oper(float n1,float n2,string s)
    {
        if(s=="+")
        {
            return n1+n2;
        }else if(s=="-")
        {
            return n1-n2;
        }else if(s=="*")
        {
            return n1*n2;
        }else if(s=="/")
        {
            return n1/n2;
        }
    }
    int main()
    {
        int top=0;
        string s;
        cin >> s;
        float n;
        n=atof(s.c_str());
        a[top]=n;
        char ch=getchar();
        while(ch!='\n')
        {
            if(s=="+"||s=="-"||s=="*"||s=="/")
            {
                float num1=a[top];
                top--;
                float num2=a[top];
                float num3=oper(num2,num1,s);
                a[top]=num3;
            }else
            {
                top++;
                float num;
                num=atof(s.c_str());
                a[top]=num;
            }
            cin >> s;
            ch=getchar();
        }
        if(s=="+"||s=="-"||s=="*"||s=="/"&&top==1)
            {
                float num1=a[top];
                top--;
                float num2=a[top];
                float num3=oper(num2,num1,s);
                a[top]=num3;
            }
       printf("%0.1f",a[top]);//这玩意会自动四舍五入 ,厉害了。14.88 保留一位小数 14.9  !!!!!
    }
    
    

    在这里插入图片描述

    已经要放弃了

    但是

    我没有放弃,历经4五个小时之后,我成功了:

    #include <bits/stdc++.h>
    using namespace std;
    double a[200];//为什么用数组而不直接用堆栈呢?因为测试样例的数据 栈 装不下,会段错误。
    double oper(double n1,double n2,char s)
    {
    
        if(s=='+')
        {
            return n1+n2;
        }else if(s=='-')
        {
            return n1-n2;
        }else if(s=='*')
        {
            return n1*n2;
        }else if(s=='/')
        {
            return n1/n2;
        }
    }
    int main()
    {
        int top=0;
        string s;
        getline(cin,s);
        for(int i=0;i<s.size();i++)
        {
            if((s[i]=='+'||s[i]=='-'||s[i]=='*'||s[i]=='/')&&(s[i+1]==' '||i==s.size()-1))//我在这里卡了半天,没有考虑到负数的情况会在这里产生影响。
            {
                double num1=a[--top];
                top--;
                double num2=a[top];
                double num3 = oper(num2,num1,s[i]);
                a[top]=num3;
                top++;
            }else if(s[i]==' ')
            {
                continue;
            }else
            {
                string str="";
                while(s[i]!=' ')
                {
                    str+=s[i];
                    i++;
                }
                double num=atof(str.c_str());
                a[top]=num;
                top++;
            }
        }
            printf("%.1f",a[--top]);
    }
    
    **//希望看到博客的同学能够告诉我为什么一个200的数组装得下的数据,一个栈装不下**
    
    展开全文
  • 1001:求值 给你N个整数,对它们进行非递减排序,令P为排序后的奇数项之和,Q为排序后的偶数项之和,T=|P-Q|。 input:输入的第个整数T表示有...output:为每测试数据输出行,由T组成。 sample input 1
  • P2129: 矩阵最大

    2018-06-06 10:16:47
    Description编写个程序输入个m*n的矩阵存储并输出,并且出每行的最大和每行的总和。要求把每行总和放入每行最大的位置,如果有多个最大,取下标值最小的那个作为最大。最后将结果矩阵输出。Input...
  • 篇中,我们学习了list的初始化,切片操作,常用15个常用api函数的介绍。这篇开始讲元组。认识元组:"""元组是有序且...(在下文讲解)元组的主要运算有合并、遍历、元组的最大和最小值等操作方法。"""#1,声明...
  • 给定nn组ai,bi,pi,对于每组数据出abiimodpi的。 输入格式 第行包含整数nn。 接下来nn行,每行包含三个整数ai,bi,pi。 输出格式 对于每组数据,输出个结果,表示abiimodpi的。 每个结果占行。 ...
  • 题目描述: 昨日重现 Problem:G Time Limit:1000ms Memory Limit:65536K Description ...兴安黑熊在高中学习数学时,曾经知道这样个公式:f(n)=12+22+32+…+n2,这个公式是可以化简的,...输入数据有多,每组一...
  • 传送门Problem Description给出组合数C(n,m), 表示从n个元素中选出m个元素的方案数。例如C(5,2) = 10, C(4,2) = 6.可是当n,m比较大的时候,C(n,m)很大!...= 100) 接下来是T组数据,每组数据有3个正整数 n, m, p ...
  • 接下来n行,每行包含一组a,b,p。 输出格式 共n行,每行输出一个询问的解。 数据范围 1≤n≤20, 1≤b≤a≤1e18, 1≤p≤105, 解题思路: 卢卡斯定理的模板题 , a和b的取值到了1e18 用递推还有逆元的方式就不太行了,...
  • :对于每种把所有的“”替换成某种运算的方案得到的数组所有元素的和求和。 题目的数据范围很诡异,和串长都只有,而更是只有。当然对此的“解释”是这样的数组编号就只有个字符,处理表达式会比较容易。 ...
  • 输入一组勾股数a,b,c(a≠b≠c),用分数格式输出其较小锐角的正弦。(要求约分。) 输入格式 一行,包含三个数,即勾股数a,b,c(无大小顺序)。 输出格式 一行,包含一个数,即较小锐角的正弦 输入输出样例 ...
  • 目的:得到各部门的离职分布 left属性各个部门(departement)...indices属性是得到分组后按的索引,是个字典类型数据,如 {sale:array[1,3,5,6],...}(数据中1,3,5,6列是sale部门的数据) indices.key()...
  • <p>有如下2组数据</p> <p> int a=100;  int b=200;  int c=300;</p> <p> </p> <p> String A="a+b";  String B="A+b";  String C="A+B";  String D="C+A+b";</p> <p> </p> <p> </p> ...
  • 根据第行的数据,创建原始的二维数组</li><li> int chessArr2[][] = new int[sparseArr[0][0]][sparseArr[0][1]];</li><li> //2.在读取稀疏数组后几行的数据(从第二行开始),并赋给原始的二维数组即可...
  • <p>CSV的数据如上所示是每日股价的浮盈,各股权重如第二张图所示,每日股票组合的浮盈。</p> <p>公式很简单就是各股股价 乘 对应百分比 然后相加</p> <p>但我自己在各列相加的时候得到的结果是个...
  • <p>Vue源码构造实例的过程就行</p><pre><code>this._init(options)</code></pre>,用你的参数对象去执行init初始化函数。init函数中先进行了大量的参数初始化操作<pre><code>this.xxx = blabla</code></...
  • java 百分位数

    千次阅读 2015-10-27 17:21:33
    1、说明:百分位数,统计学术语,如果将一组数据从小到大排序,并计算相应的累计百分位,则某一百分位所对应数据的就称为这一百分位的百分位数。可表示为:一组n个观测按数值大小排列。如,处于p%位置的称第p...
  • a 的 b 次方对 p 取模的。 输入格式 三个整数 a,b,p ,在同行用空格隔开。 输出格式 输出个整数,表示a^b mod p数据范围 0≤a,b≤109 1≤p≤109 输入样例: 3 2 7 输出样例: 2 思路 快速幂 详情...
  • 组合数 III

    2021-01-26 16:26:54
    接下来n行,每行包含一组a,b,p。 输出格式 共n行,每行输出一个询问的解。 数据范围 1≤n≤20, 1≤b≤a≤1e18, 1≤p≤1e5, 输入样例: 3 5 3 7 3 1 5 6 4 13 输出样例: 3 3 2 分析: 这道题的数据范围较大且P不...
  • 次方

    2014-08-13 10:39:30
    行输入个整数n表示测试数据数(n 每测试只有行,其中有三个正整数a,b,c(1= 输出 输出a的b次方对c取余之后的结果 样例输入 3 2 3 5 3 100 10 11 12345 12345 样例输出 3 1 #include int ...
  • // 定义一组与操作有关的方法 // 使用普通通道执行的select public ResultSet select(String sql) { ResultSet prs = null; if (stmt != null) { try { prs = stmt.executeQuery(sql); } ...
  • 组合数Ⅲ

    2020-02-14 22:46:49
    接下来n行,每行包含一组a,b,p。 输出格式 共n行,每行输出一个询问的解。 数据范围 1≤n≤20, 1≤b≤a≤1e18, 1≤p≤1e5, 输入样例: 3 5 3 7 3 1 5 6 4 13 输出样例: 3 3 2 思路:直接利用卢卡斯定理求解 代...
  • P - 偶数求和

    2017-10-19 08:59:56
    个长度为n(n)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数个平均,如果最后不足m个,则以实际数量平均。编程输出该平均序列。 Input 输入数据有多,每行,...
  • P - 偶数求和 HDU - 2015

    2018-12-03 16:17:09
    P - 偶数求和 HDU - 2015  有个长度为n(n&lt;=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数个平均,如果最后...对于每输入数据,输出个平均序列,每输出占...
  • <p>我有个训练好的模型abc,里面有10个变量,x1至x10,其中x1是数值型数据,x2,x3是分类数组数据,x4至x9是数值型数据,x10是分类数组数据。我怎样写代码才能实现:...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 272
精华内容 108
关键字:

一组数据求p值