c++ 一维高斯拟合_χ2检验教案:拟合度检验与正态分布的关系
摘要:
- 二水平拟合度之二项分布检验
数据:随机抛32枚硬币,22枚正面朝上[1]。双尾虚无假设:正面朝上总体期望0.5。
Excel中的解:随机抛32枚均匀硬币,正面朝上服从二项分布。百分位数21的百分等级97.49%,本题的右尾p值为100%-97.49%。分布对称,双尾p 值为右尾p 值的两倍。
binom.test(x = 22,n = 32)
##
## Exact binomial test
##
## data: 22 and 32
## number of successes = 22, number of trials = 32, p-value = 0.0501
## alternative hypothesis: true probability of success is not equal to 0.5
## 95 percent confidence interval:
## 0.4999224 0.8388153
## sample estimates:
## probability of success
## 0.6875
在没有个人电脑、只能纸笔查表的年代,这类问题通过正态近似解决。题中的二项分布随机数X 近似服从的正态分布总体均值
本例21.5的标准化z 值1.9445,对应的双尾p 值为0.05183。
prop.test(x = 22,n = 32)
##
## 1-sample proportions test with continuity correction
##
## data: 22 out of 32, null probability 0.5
## X-squared = 3.7812, df = 1, p-value = 0.05183
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.4986377 0.8325051
## sample estimates:
## p
## 0.6875
但如果没有作连续性校正,本例22的标准化z 值就是2.1213,对应的双尾p 值为0.03389,
p 值即对应的z 双尾p 值。
prop.test(x = 22,n = 32,correct = F)
##
## 1-sample proportions test without continuity correction
##
## data: 22 out of 32, null probability 0.5
## X-squared = 4.5, df = 1, p-value = 0.03389
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.5143332 0.8204746
## sample estimates:
## p
## 0.6875
- 二水平拟合度之
检验
R (ver. 4.0.0) 与SPSS (ver. 23) 的
chisq.test(c(22,10))
##
## Chi-squared test for given probabilities
##
## data: c(22, 10)
## X-squared = 4.5, df = 1, p-value = 0.03389
SPSS的菜单是⌥A ▶ N (▶ L)▶ C ▶ ... ▶ ⌥X ▶ ⌥E ▶...。SPSS的结果可以同时给出二项分布检验的Exact Sig.双尾p 值0.0501。
- 拟合度之
检验:从二水平到三水平
二水平的
df =1,等价于不作±0.5连续性校正的z 检验。这个z 检验也就是百分比的点估计prop=22/32相对虚无假设
z 检验,
从二水平向三水平的情形推广,将正面朝上的硬币分为两种情形:5枚硬币没有弹起、直接正面朝上(Tri=1),17枚硬币落地后弹起,最后正面朝上(Tri=-1)。此时虚无假设参数是一个三维空间中的二维度向量,Tri三种取值(-, 0, +)的百分比总体期望满足
chisq.test(c(17,10,5))
##
## Chi-squared test for given probabilities
##
## data: c(17, 10, 5)
## X-squared = 6.8125, df = 2, p-value = 0.03317
受二水平的情形启发,这个三水平情形的
可以验证,即使
对一般的
mu1 <- 0.4; mu0 <- 1 - mu1;plot(c(0,1),c(1,0),col='grey',type='l',asp=1,xlab = "Head=1 Proportion",ylab="Head=0 Proportion")
abline(h=0,v=0,lty=3)
points(22/32,10/32,pch=19)points(mu1,mu0)
arrows(mu1,mu0,0,1,col='blue')
arrows(mu1,mu0,1,0,col='pink')chisq.test(xc <- c(22,10),p = mu<- c(mu1,mu0))
##
## Chi-squared test for given probabilities
##
## data: xc <- c(22, 10)
## X-squared = 11.021, df = 1, p-value = 0.0009009
sum((xc- sum(xc)*mu)^2 * (sum(xc)*mu)^-1)
## [1] 11.02083
(sigma2 <- mu1*sum((c(1,0)-mu)^2) + mu0*sum((c(0,1)-mu)^2))
## [1] 0.48
sum((xc/sum(xc) - mu)^2)/(sigma2/sum(xc))
## [1] 11.02083
这样就不难从二维推广到三维。下图三个坐标和=1的平面构成(
作图和数值验证的R代码如下——
## 数据与对称的参数
mu_neg <- 1/3; mu_neu <- 1/3;
mu_pos <- 1- mu_neg - mu_neu;
mu <- c(mu_neg,mu_neu,mu_pos)chisq.test(x = xc<-c(17,10,5),p = mu)
##
## Chi-squared test for given probabilities
##
## data: xc <- c(17, 10, 5)
## X-squared = 6.8125, df = 2, p-value = 0.03317
sum((xc- sum(xc)*mu)^2 * (sum(xc)*mu)^-1) # 6.8125
## [1] 6.8125## 三维作图
if(!require(plot3Drgl)){install.packages('plot3Drgl');require(plot3Drgl);}
## Loading required package: plot3Drgl
## Loading required package: rgl
## Loading required package: plot3D
open3d()
## wgl
## 1
plot3d(c(0,1,0,0),c(0,0,1,0),c(1,0,0,1),type='l',col='grey',asp=1,xlab='Tri<0 Prop',ylab = 'Tri=0 Prop',zlab = 'Tri>0 Prop')# points3d(mu_neg,mu_neu,mu_pos,pch=1)arrow3d(mu,c(1,0,0),col='blue')
arrow3d(mu,c(0,1,0),col='red')
arrow3d(mu,c(0,0,1),col='green')
arrow3d(mu,xc/sum(xc),col='black',type='r')## 对称情形的数值复核
(sigma2 <- sum(mu*c(sum((c(1,0,0)-mu)^2),sum((c(0,1,0)-mu)^2),sum((c(0,0,1)-mu)^2)))/2) # df=2
## [1] 0.3333333
sum((xc/sum(xc) - mu)^2)/(sigma2/sum(xc))
## [1] 6.8125
- 拟合度之
检验:三水平不对称参数的一般情形
如果蓝、红、绿三种向量各自出现的概率
[2]给出的旋转变换矩阵,可将三角截面上所有向量变换为第一坐标为0的二维向量——向量起点、终点变换后的第一坐标都是同一常数0.5773503,相减为0)。
## 坐标旋转
(P_mt <- cbind(c(1,1,1)/ 3^.5,c(1,-1/2,-1/2)/ 1.5^.5,c(0,1,-1)/ 2^.5))
## [,1] [,2] [,3]
## [1,] 0.5773503 0.8164966 0.0000000
## [2,] 0.5773503 -0.4082483 0.7071068
## [3,] 0.5773503 -0.4082483 -0.7071068
(prop_t <- ((xc <- c(17,10,5))/sum(xc)) %*% P_mt)
## [,1] [,2] [,3]
## [1,] 0.5773503 0.2423974 0.1104854## 不对称的参数及其数值复核
mu_neg <- 0.3; mu_neu <- 0.5;
mu_pos <- 1- mu_neg - mu_neu;
mu <- c(mu_neg,mu_neu,mu_pos)chisq.test(x = xc,p = mu)
##
## Chi-squared test for given probabilities
##
## data: xc
## X-squared = 8.2604, df = 2, p-value = 0.01608
sum((xc- sum(xc)*mu)^2 * (sum(xc)*mu)^-1)
## [1] 8.260417
(mu_t <- mu %*% P_mt)
## [,1] [,2] [,3]
## [1,] 0.5773503 -0.04082483 0.212132
(brg <- P_mt[,2:3]-cbind(rep(1,3))%*%mu_t[2:3])
## [,1] [,2]
## [1,] 0.8573214 -0.2121320
## [2,] -0.3674235 0.4949747
## [3,] -0.3674235 -0.9192388
(sigma2 <- t(brg)%*%diag(mu)%*%brg)
## [,1] [,2]
## [1,] 0.31500000 -0.07794229
## [2,] -0.07794229 0.30500000
rbind(prop_t[2:3] - mu_t[2:3])%*%solve(sigma2/sum(xc))%*%(prop_t[2:3] - mu_t[2:3])
## [,1]
## [1,] 8.260417
即使不是保持尺度不变的正交旋转,一般的线性变化也不改变样本均值(黑箭头)与个案总体分布(彩色箭头)的相对尺度。可以把三角截面简单投影的第1、2轴平面,或者第1、3轴平面,或者第2、3轴平面,都有同样的结果——
t(sapply(list(c(1,2),c(1,3),c(2,3)),function(jy){Sigma2 <- t(brg2 <- (diag(3)-cbind(rep(1,3))%*%mu)[,jy]) %*%diag(mu) %*% brg2;z2 <- rbind(D2 <- (xc/sum(xc)-mu)[jy]) %*%solve(Sigma2/sum(xc)) %*% D2;c(jy, z2)})
)
## [,1] [,2] [,3]
## [1,] 1 2 8.260417
## [2,] 1 3 8.260417
## [3,] 2 3 8.260417
- SPSS (ver. 23)的多水平拟合度Exact Sig.与多项分布检验结果不一致
在上图对Tri变量作的拟合度
chisq.test(xc<-c(17,10,5))
##
## Chi-squared test for given probabilities
##
## data: xc <- c(17, 10, 5)
## X-squared = 6.8125, df = 2, p-value = 0.03317if(!require(EMT)){ install.packages("EMT");require(EMT);}
## Loading required package: EMT
multinomial.test(xc ,prob =mu <- rep(1/3,3))
##
## Exact Multinomial Test, distance measure: p
##
## Events pObs p.value
## 561 9e-04 0.0412## Verified (Exact Multinomial Test)
(d_cri <- dmultinom(xc,prob = mu))
## [1] 0.0009168089
dar <- array(dim=c(33,33))
for (i in 0:32) for (j in 0:32){k <- 32- i - j; dar[i+1,j+1]=ifelse(k<0,0,dmultinom(c(i,j,k),prob = mu))}
sum(dar) # all probabilities
## [1] 1
sum(dar[dar<=d_cri]) # p_value
## [1] 0.04119207
SPSS报告的Exact Sig.可以通过复制表格到Excel得到更精确的数值0.034497。注意到EMT包的多项分布检验提供了useChisq=T选项,在此设置下,虚无假设下各事件的极端程度等级由
验算确证,SPSS报告的Exact Sig.是虚无假设下看到更大或相等
## Exact Sig. of Chisq
multinomial.test(xc ,prob =mu,useChisq = T)
##
## Exact Multinomial Test, distance measure: chisquare
##
## Events chi2Obs p.value
## 561 6.8125 0.0345
(c_cri <- sum((xc-(ne <- mu*sum(xc)))^2 / ne))
## [1] 6.8125
dar.c <- darfor (i in 0:32) for (j in 0:32){k <- 32- i - j; dar.c[i+1,j+1]=ifelse(k<0,0,sum((c(i,j,k)-ne)^2 / ne));dar[i+1,j+1]=ifelse(k<0,0,dmultinom(c(i,j,k),prob = mu));}
sum(dar[dar.c>=c_cri]) # p_value
## [1] 0.03449689
- 给不教统计课同行的应用建议(以及给统计课同行的吐槽)
- 二水平拟合度检验问题,推荐在 R 中作二项分布检验,报告百分比总体参数的置信区间。SPSS没有给出置信区间,但仍在
拟合度检验⌥A ▶ N(▶ L)▶ C ... 结果表格报告了Exact Sig.,即二项分布检验的
p 值,应用中以此为准,不必参考
的p 值。可以这么说:对于二水平拟合度检验问题,
拟合度检验只有教学价值没有应用价值,可以、也应当被二项分布检验全面替代。 - 三水平(以及较少水平数的)拟合度检验问题,应用中有两类情形应当被区别对待。其中一种情形虽然非常流行但几乎从来都不是研究者的真实意图:只关注虚无假设是否被拒绝,不报告各个水平具体的百分比总体参数置信区间。这种情形建议在 R 中通过EMT包作多项分布检验。同样可以这么说:对于多水平拟合度检验问题,
拟合度检验同样只有教学价值,如果与多项分布检验结果有出入,以多项分布检验
p 值为准。那么,实验学科的统计课为什么要教
拟合度检验,只是因为它的公式比较简洁?可能学术史的逻辑真就是这么回事。在没有计算机的时代,统计量方便手算然后查表对临界值。到了个人计算机普及的时代,统计课程如果仍然坚持教拟合度检验,或许需要这样一个理由:拟合度检验可以进一步讲解中心极限定理,这也正是本文的意图。 - 三水平(以及较少水平数的)拟合度检验问题,应用中常见情形应当报告各个百分比参数的置信区间,可以在R中作多个二项分布检验。在事后检验的多重比较场合,必须确保一系列(family-wise)置信区间整体置信水平,可通过Bonferroni方法校正单个区间的一类错误率。理论上也不难推算百分比总体参数向量的置信区域,但不便于文本方式传播,在实际研究中极少有同行报告置信区域。三水平拟合度Bonferroni方法事后检验示例——
alpha_familywise <- 0.05
xc<-c(17,10,5)
K <- length(xc)
alpha_corrected <- alpha_familywise/K
cl<-sapply(xc,FUN = function(x) binom.test(x,sum(xc),conf.level = 1-alpha_corrected)$conf)
rbind(Lower=cl[1,],Est=xc/sum(xc),Upper=cl[2,])
## [,1] [,2] [,3]
## Lower 0.3128146 0.1367970 0.03996758
## Est 0.5312500 0.3125000 0.15625000
## Upper 0.7413646 0.5383827 0.36617910
参考
- ^数据背景: Kahneman, D., Frederickson, B. L., Schreiber, C. A., & Redelmeier, D. A. (1993). When More Pain Is Preferred to Less: Adding a Better End, Psychological Science, 4, 401-405.
- ^F检验与Tukey HSD检验的备择假设方向图解 https://zhuanlan.zhihu.com/p/50996318
c++ 一维高斯拟合_χ2检验教案:拟合度检验与正态分布的关系相关推荐
- python 高斯函数拟合_在python中拟合任意高斯函数,消耗大量内存
我试图(在python中)将一系列任意数量的高斯函数(由一个仍在改进的简单算法确定)拟合到一个数据集.对于我当前的样本数据集,我有174个高斯函数.我有一个进行拟合的过程,但基本上是复杂的猜测和检查, ...
- python正弦函数拟合_在Python中拟合正弦数据
我想将下面附带的数据与-a*sin(b*x + c)(或可能也可以使用-a*sin(2*x))与a b c作为要确定的值的函数拟合.我使用了scipy.optimize.curve_fit,但效果不好 ...
- 统计学(一): Z 分数 正态分布 (附 Python 实现代码) --Z 检验先修; Z 分数与正态分布两者关系; Z 分数与百分位数的异同;面试要点(以心理学实验为舟)
背景介绍 笔者的第一本心理学启蒙教材<西奥蒂尼社会心理学>:揭开了自我.环境.群体之间看不见的影响力." 行为背后的目的到底是什么?" " 目的背后的人和 ...
- 基于BP神经网络的非线性函数拟合(一维高斯函数)研究-含Matlab代码
目录 一.引言 二.BP神经网络的结构与原理 2.1 信息前向传播 2.2 误差的反向传播过程 三.基于BP神经网络的非线性函数拟合 3.1 数据生成 3.2 神经网络拟合结果 四.参考文献 五.Ma ...
- python高斯拟合_如何在python中拟合高斯曲线?
有很多方法可以将高斯函数拟合到数据集.我经常在拟合数据时使用astropy,这就是为什么我想添加这个作为额外的答案. 我使用的一些数据集应该模拟高斯噪声:import numpy as np from ...
- python一维平滑滤波_高斯滤波器的原理及其实现过程(附模板代码)
本文主要介绍了高斯滤波器的原理及其实现过程高斯滤波器是一种线性滤波器,能够有效的抑制噪声,平滑图像.其作用原理和均值滤波器类似,都是取滤波器窗口内的像素的均值作为输出.其窗口模板的系数和均值滤波器不同 ...
- matlab 最小二乘法拟合_机器学习十大经典算法之最小二乘法
点击上方"计算机视觉cv"即可"进入公众号" 重磅干货第一时间送达 最小二乘法概述 最小二乘法(又称最小平方法)是一种数学优化技术.它通过最小化误差的平方和寻找 ...
- matlab中离开网格的流量,数学建模【数据处理方法(一维、二维插值方法;数据拟合方法;插值and拟合的MATLAB实现)】...
[学习网址:MOOC---郑州轻工业大学---数学建模与实验]数学建模专栏 笔记01[第1.2章][概述.软件介绍] 笔记02[第3章][数据处理方法] 笔记03[第4章][规划模型] 笔记04[第5 ...
- R语言偏相关或者部分相关性系数计算实战:通过拟合两个回归模型、或者pysch包计算偏相关系数(Partial Correlation)、通过方差分析获得偏相关系数的F统计量(偏F检验、二型检验)
R语言偏相关或者部分相关性系数计算实战:通过拟合两个回归模型.或者pysch包计算偏相关系数(Partial Correlation).通过方差分析获得偏相关系数的F统计量(偏F检验.二型检验) 目录
最新文章
- python 字典 的pop 方法
- iPhone App开发导航条(Navigation Bar)素材PSD下载
- 钻石问题(菱形继承问题) 和虚继承
- php和python哪个工资高-前端,java,php,python工程师哪个最缺 知乎
- Java连接数据库(2)
- 驱动华为_实锤!华为成立驱动芯片部门,OLED驱动芯片正流片
- how to get line number of given ABAP source code
- 连不上网_手机连不上网?四种方法教你如何解决,建议收藏以备不时之需
- 不要62(HDU-2089)
- 生成pyd文件时提示“Unable to find vcvarsall.bat”的问题
- 【jquery】 随笔记录
- Flutter 即学即用系列博客——09 MethodChannel 实现原生与 Flutter 通信(二)
- asp.net mvc 如何在执行完某任务后返回原来页面
- 蓝桥杯 ADV-69 算法提高 质因数
- 51CTO学院两周岁啦,贺春旸送上祝福!
- 【视频】超级账本HyperLedger:Fabric源码走读(一):项目构建与代码结构
- 一句实现jquery导航栏
- myCat实现分库分表
- 知识问答 - 名侦探柯南
- 计算机上u盘变成快捷方式,win7系统U盘文件都变成快捷方式的解决方法
热门文章
- 输出华氏-摄氏温度转换表(15分)
- 非线性优化库Ceres问题记录
- HoloLens 2开发:HoloLens开发VS安装与配置
- Scrum Meeting博客目录
- python列表用法大全
- 如何在Ubuntu 13.04, 13.10上安装Sublime Text 3
- Java–cvc-complex-type.4:Attribut ‘version’ must appear on element ‘web-app’
- Openstack api security testing tools
- python3.8编程实例_Python3.8动态人脸识别实例
- shell mysql 取值_shell 脚本中获取mysql多个字段的值