[从头学数学] 第197节 统计案例
来源:互联网 发布:iphone照片mac air同步 编辑:程序博客网 时间:2024/04/27 16:46
剧情提要:
[机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第五转的修炼。
这次要研究的是[统计案例]。
[机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第五转的修炼。
这次要研究的是[统计案例]。
正剧开始:
星历2016年04月26日 16:34:30, 银河系厄尔斯星球中华帝国江南行省。
[工程师阿伟]正在和[机器小伟]一起研究[统计案例]。
<span style="font-size:18px;">X= [165, 165, 157, 170, 175, 165, 155, 170]Y= [48, 57, 50, 54, 64, 61, 43, 59]拟合结果: y = 0.84848 x + -85.71212 , r= 0.79847def linefit(x , y): N = float(len(x)) sx,sy,sxx,syy,sxy=0,0,0,0,0 for i in range(0,int(N)): sx += x[i] sy += y[i] sxx += x[i]*x[i] syy += y[i]*y[i] sxy += x[i]*y[i] a = (sy*sx/N -sxy)/( sx*sx/N -sxx) b = (sy - a*sx)/N r = abs(sy*sx/N-sxy)/math.sqrt((sxx-sx*sx/N)*(syy-sy*sy/N)) return a,b,r def tmp(): X=[ 165, 165, 157, 170, 175, 165, 155, 170]; Y=[ 48, 57, 50, 54, 64, 61, 43, 59]; a,b,r=linefit(X,Y) print("X=",X) print("Y=",Y) print("拟合结果: y = %10.5f x + %10.5f , r=%10.5f" % (a,b,r)); </span>
<span style="font-size:18px;"> if (1) { var r = 20; config.setSector(10,5,9,1); config.graphPaper2D(0, 0, r); config.axis2D(0, 0, 320, 1.6); //坐标轴设定 var scaleX = 2*r, scaleY = 2*r; var spaceX = 2, spaceY = 10; var xS = 150, xE = 180; var yS = 0, yE = 70; config.axisSpacing(xS, xE, spaceX, scaleX, 'X'); config.axisSpacing(yS, yE, spaceY, scaleY, 'Y'); var X=[ 165, 165, 157, 170, 175, 165, 155, 170], Y=[ 48, 57, 50, 54, 64, 61, 43, 59]; var array = []; var size = X.length; for (var i = 0; i < size; i++) { array.push([X[i], Y[i]]); } var transform = new Transform(); var tmp = []; array = transform.scale(transform.translate(array, -xS, -yS), scaleX/spaceX, scaleY/spaceY); tmp = [].concat(array); shape.pointDraw(tmp, 'green'); array = []; for (var i = 0; i < size; i++) { array.push([X[i], taskFun(X[i])]); } array = transform.scale(transform.translate(array, -xS, -yS), scaleX/spaceX, scaleY/spaceY); tmp = [].concat(array); shape.multiLineDraw(tmp, 'red'); plot.setFillStyle('blue'); plot.fillText('拟合结果: y = 0.84848x -85.71212', 30, -270, 200); } } function taskFun(x) { return 0.84848*x-85.71212;}</span>
<span style="font-size:18px;">[21, 23, 25, 27, 29, 32, 35][1.9459101490553132, 2.3978952727983707, 3.044522437723423, 3.1780538303479458, 4.189654742026425, 4.74493212836325, 5.783825182329737]X= [21, 23, 25, 27, 29, 32, 35]Y= [1.9459101490553132, 2.3978952727983707, 3.044522437723423, 3.1780538303479458, 4.189654742026425, 4.74493212836325, 5.783825182329737]拟合结果: y = 0.27203 x + -3.84917 , r= 0.99260</span>
<span style="font-size:18px;"> if (1) { var r = 20; config.setSector(10,5,9,1); config.graphPaper2D(0, 0, r); config.axis2D(0, 0, 320, 1.6); //坐标轴设定 var scaleX = 2*r, scaleY = 2*r; var spaceX = 1.5, spaceY = 1; var xS = 20, xE = 36; var yS = 0, yE = 7; config.axisSpacing(xS, xE, spaceX, scaleX, 'X'); config.axisSpacing(yS, yE, spaceY, scaleY, 'Y'); var X = [21, 23, 25, 27, 29, 32, 35];var Y = [1.9459101490553132, 2.3978952727983707, 3.044522437723423, 3.1780538303479458, 4.189654742026425, 4.74493212836325, 5.783825182329737]; var array = []; var size = X.length; for (var i = 0; i < size; i++) { array.push([X[i], Y[i]]); } var transform = new Transform(); var tmp = []; array = transform.scale(transform.translate(array, -xS, -yS), scaleX/spaceX, scaleY/spaceY); tmp = [].concat(array); shape.pointDraw(tmp, 'green'); array = []; for (var i = 0; i < size; i++) { array.push([X[i], taskFun(X[i])]); } array = transform.scale(transform.translate(array, -xS, -yS), scaleX/spaceX, scaleY/spaceY); tmp = [].concat(array); shape.multiLineDraw(tmp, 'red'); plot.setFillStyle('blue'); plot.fillText('拟合结果: y = 0.27203x-3.84917', 30, -270, 200); } } function taskFun(x) { return 0.27203*x-3.84917;}</span>
<span style="font-size:18px;">>>> 置信度 > 99.9%, K^2 = 56.631879146114834#独立性检验def tmp3(): #数据 #[a, b] #[c, d] a = 7775; b = 42; c = 2099; d = 49; kSquare = (a+b+c+d)*(a*d-b*c)**2/(a+b)/(c+d)/(a+c)/(b+d); #置信度查对表 trust = [[0.5,0.455],[0.4,0.708],[0.25,1.323],[0.15,2.072],[0.1,2.706],\ [0.025,5.024],[0.01,6.635],[0.005,7.879],[0.001,10.828]]; size = len(trust); for i in range(size-1, -1, -1): if kSquare >= trust[i][1]: print('置信度 > {0}%, K^2 = {1}'.format(round((1-trust[i][0])*100, 3), kSquare)); return trust[i][0];</span>
<span style="font-size:18px;">>>> 置信度 > 99.9%, K^2 = 16.37320688824579#独立性检验#例1def tmp3(): #数据 #[a, b] #[c, d] a = 214 b = 175 c = 451 d = 597 kSquare = (a+b+c+d)*(a*d-b*c)**2/(a+b)/(c+d)/(a+c)/(b+d); #置信度查对表 trust = [[0.5,0.455],[0.4,0.708],[0.25,1.323],[0.15,2.072],[0.1,2.706],\ [0.025,5.024],[0.01,6.635],[0.005,7.879],[0.001,10.828]]; size = len(trust); for i in range(size-1, -1, -1): if kSquare >= trust[i][1]: print('置信度 > {0}%, K^2 = {1}'.format(round((1-trust[i][0])*100, 3), kSquare)); return trust[i][0];</span>
<span style="font-size:18px;">>>> 置信度 > 97.5%, K^2 = 6.109090909090909#独立性检验#题1def tmp3(): #数据 #[a, b] #[c, d] a = 10 b = 45 c = 20 d = 30 kSquare = (a+b+c+d)*(a*d-b*c)**2/(a+b)/(c+d)/(a+c)/(b+d); #置信度查对表 trust = [[0.5,0.455],[0.4,0.708],[0.25,1.323],[0.15,2.072],[0.1,2.706],\ [0.025,5.024],[0.01,6.635],[0.005,7.879],[0.001,10.828]]; size = len(trust); for i in range(size-1, -1, -1): if kSquare >= trust[i][1]: print('置信度 > {0}%, K^2 = {1}'.format(round((1-trust[i][0])*100, 3), kSquare)); return trust[i][0];</span>
<span style="font-size:18px;">>>> X= [126.974, 96.933, 86.656, 63.438, 55.264, 50.976, 39.069, 36.156, 35.209, 32.416]Y= [4.224, 3.835, 3.51, 3.758, 3.939, 1.809, 2.946, 0.359, 2.48, 2.413]拟合结果: y = 0.02556 x + 1.33452 , r= 0.67615</span>
<span style="font-size:18px;"> if (1) { var r = 20; config.setSector(10,5,9,1); config.graphPaper2D(0, 0, r); config.axis2D(0, 0, 320, 1.6); //坐标轴设定 var scaleX = 2*r, scaleY = 2*r; var spaceX = 10, spaceY = 1; var xS = 0, xE = 150; var yS = 0, yE = 10; config.axisSpacing(xS, xE, spaceX, scaleX, 'X'); config.axisSpacing(yS, yE, spaceY, scaleY, 'Y'); var X = [126.974, 96.933,86.656,63.438,55.264,50.976,39.069,36.156,35.209,32.416];var Y = [4.224,3.835,3.510,3.758,3.939,1.809,2.946,0.359,2.480,2.413]; var array = []; var size = X.length; for (var i = 0; i < size; i++) { array.push([X[i], Y[i]]); } var transform = new Transform(); var tmp = []; array = transform.scale(transform.translate(array, -xS, -yS), scaleX/spaceX, scaleY/spaceY); tmp = [].concat(array); shape.pointDraw(tmp, 'green'); array = []; for (var i = 0; i < size; i++) { array.push([X[i], taskFun(X[i])]); } array = transform.scale(transform.translate(array, -xS, -yS), scaleX/spaceX, scaleY/spaceY); tmp = [].concat(array); shape.multiLineDraw(tmp, 'red'); plot.setFillStyle('blue'); plot.fillText('拟合结果: y = 0.02556*x + 1.33452', 30, -270, 200); } </span>
<span style="font-size:18px;">置信度 > 90.0%, K^2 = 3.6889201613659814#独立性检验#题3def tmp3(): #数据 #[a, b] #[c, d] a = 24 b = 31 c = 8 d = 26 kSquare = (a+b+c+d)*(a*d-b*c)**2/(a+b)/(c+d)/(a+c)/(b+d); #置信度查对表 trust = [[0.5,0.455],[0.4,0.708],[0.25,1.323],[0.15,2.072],[0.1,2.706],\ [0.025,5.024],[0.01,6.635],[0.005,7.879],[0.001,10.828]]; size = len(trust); for i in range(size-1, -1, -1): if kSquare >= trust[i][1]: print('置信度 > {0}%, K^2 = {1}'.format(round((1-trust[i][0])*100, 3), kSquare)); return trust[i][0];</span>
<span style="font-size:18px;">>>> X= [126.974, 96.933, 86.656, 63.438, 55.264, 50.976, 39.069, 36.156, 35.209, 32.416]Y= [4.224, 3.835, 3.51, 3.758, 3.939, 1.809, 2.946, 0.359, 2.48, 2.413]拟合结果: y = 0.02556 x + 1.33452 , r= 0.67615SSG = 12.870180099999999, SSE = 6.986174058384116, SSR = 5.884006041615882残差: [-0.356302026825019, 0.02262360033670774, -0.039669709794743824, 0.8018423973734929, 1.1917909702046225, -0.8285966637200308, 0.6127770403049579, -1.8997591485062628, 0.24544861984106747, 0.24984492078520049]回归: [1.653002026825019, 0.885076399663292, 0.6223697097947434, 0.02885760262650683, -0.18009097020462272, -0.28970333627996947, -0.594077040304958, -0.6685408514937374, -0.6927486198410677, -0.7641449207852009]def tmp(): X = [126.974, 96.933,86.656,63.438,55.264,50.976,39.069,36.156,35.209,32.416]; Y = [4.224,3.835,3.510,3.758,3.939,1.809,2.946,0.359,2.480,2.413]; a,b,r=linefit(X,Y) print("X=",X) print("Y=",Y) print("拟合结果: y = %10.5f x + %10.5f , r=%10.5f" % (a,b,r)); size = len(X); #平均值 average = sum(Y)/size; SST = 0; #残差 residual = []; SSE = 0; #回归 regression = []; SSR = 0; for i in range(size): SST += (Y[i]-average)**2; value = a*X[i]+b; residual.append(Y[i]-value); SSE += (Y[i]-value)**2; regression.append(value-average); SSR += (value-average)**2; print('SSG = {0}, SSE = {1}, SSR = {2}'.format(SST, SSE, SSR)); print('残差:', residual); print('回归:', regression);</span>
本节到此结束,欲知后事如何,请看下回分解。
0 0
- [从头学数学] 第197节 统计案例
- [从头学数学] 第175节 统计
- [从头学数学] 第03节 位置
- [从头学数学] 第40节 测量
- [从头学数学] 第52节 面积
- [从头学数学] 第65节 四则运算
- [从头学数学] 第69节 三角形
- [从头学数学] 第75节 位置
- [从头学数学] 第77节 可能性
- [从头学数学] 第93节 比
- [从头学数学] 第94节 圆
- [从头学数学] 第98节 负数
- [从头学数学] 第101节 比例
- [从头学数学] 第108节 有理数
- [从头学数学] 第112节 一元一次方程
- [从头学数学] 第118节 实数
- [从头学数学] 第128节 三角形
- [从头学数学] 第132节 轴对称
- [工作点滴]ssh/http clone本地项目的切换
- jsp页面之间用?传值
- 算法竞赛中的输入输出框架
- JDK 和JRE 解决版本不一致问题
- maven常用命令
- [从头学数学] 第197节 统计案例
- 翻译mosHow to Switch to a New Undo Tablespace (文档 ID 1951695.1)使用新的undo表空间和删除旧的表空间
- 检测旋转词
- 新思路_Android同时显示多个跑马灯
- java读取配置文件
- HDU搬寝室DP
- Android 6.0运行时权限解决办法
- hive常见错误汇总
- 清华男的大学4年