今天布置的家庭作业还真是烦人!做完《数学之友》上“统计案例”一章所有习题。我的妈呀,算什么卡方、线性回归,公式繁琐地要命,按计算器都能把人按死。还是让电脑帮我做吧。
不用什么 GNUplot、Mathematica,俺用 Haskell,自己动手,丰衣足食!
一. 独立性检验
卡方就是一个公式:
kaf a b c d =
((sqr ((a * d) - (b * c))) * (a + b + c + d)) /
((a + b) * (c + d) * (a + c) * (d + b))
-- sqr 函数是用来求一个数的平方的,再实现一下:
sqr n = n * n
这样就搞定一种题了!以后算卡方不要太简单,把要检测独立性的四个数据按顺序作为 kaf 函数的参数输入 Hugs 就搞定了!
Main> kaf 184 61 91 9
11.097807845216 :: Double
二. 线性回归分析
其实就是求一个 y = a + bx 中的 a,b。把 xn 值、yn 值各表示为一个列表,像这样来使用:
Main> lrb [1..8] [5.54, 7.52, 10.02, 11.73, 15.69, 16.12, 16.98, 21.06]
2.12142857142857 :: Double
Main> lra [1..8] [5.54, 7.52, 10.02, 11.73, 15.69, 16.12, 16.98, 21.06]
3.53607142857143 :: Double
那么,就可以根据公式把它们抄出来:
lrb xl yl =
-- 这里要注意一下,数学中的 sigma 是一种记法而非函数
(sigma
(\(x, y) -> (x - xp) * (y - yp)) (zip xl yl)) /
sigma (\x -> sqr (x - xp)) xl
where
xp = avg xl
yp = avg yl
lra xl yl = avg yl - (lrb xl yl) * avg xl
其中,avg 函数用来求一个列表的平均值(这里也就是所有 x 取值的平均值啦),它需要知道列表长度:
avg ls = sum ls / len ls
len [] = 0
len (x:xl) = (len xl) + 1
最后一个 sigma 函数的实现也很简单,就是累加嘛,只是写地有些不好看罢了:
sigma f (x:xl) =
if xl == []
then f x
else f x + sigma f xl
重申一遍,这里的 sigma 被表示为函数而非数学形式。那么,猜猜下面的 sigma 的数学形式是什么?
Main> sigma (\(x, y) -> x * y) [(1,4), (5,3), (3,8), (2,4)]
51 :: Integer
三. 线性相关系数
线性相关系数 r 的求法也只是个函数,再抄一遍:
lrr xl yl =
(sigma
(\(x, y) -> (x - xp) * (y - yp)) (zip xl yl)) /
sqrt ((sigma (\x -> sqr (x - xp)) xl) *
(sigma (\y -> sqr (y - yp)) yl))
where
xp = avg xl
yp = avg yl
以后这样用就行了:
Main> lrr [1..8] [5.54, 7.52, 10.02, 11.73, 15.69, 16.12, 16.98, 21.06]
0.987345979074916 :: Double
哇!这组数据的线性相关性接近 1,好高啊!
四. 结语
现在发现 Haskell 还真是实用,这个周末数学作业不愁了,打魔兽去喽!
最后给楼下的看客留一个与 FP 没什么关系的小题目:
对于一组线性相关数据,往往要求它的所有产生数据—— a、b、r,还有线性回归函数,顺便还要用这个函数再求一下对未来的预期。我如果当真输入 3 遍数据然后手工计算预期岂不是很傻?!想想看怎么让我只输入一遍数据就得到所有的产生数据(设计一下数据结构而已)还有线性回归函数(其实只有这个才有那么一点点技术含量)。
分享到:
相关推荐
资源包含了FP-tree算法的演示文本、算法源码的讲解、可执行程序的演示以及可编译程序代码,通过这些资源,你可以掌握fp_tree 算法的原理和树的创建过程。
CFP-FP人脸识别数据集,包括CFP_FP_aligned_112,cfp_fp_pair.txt
CFP资格认证考试真题-员工福利与退休规划.pdf
完成FP腔传感解调
CFP-FP模拟口罩人脸数据集.7z
打印机驱动 惠普HP LaserJet Pro MFP M128fp 驱动打印机驱动 惠普HP LaserJet Pro MFP M128fp 驱动打印机驱动 惠普HP LaserJet Pro MFP M128fp 驱动打印机驱动 惠普HP LaserJet Pro MFP M128fp 驱动打印机驱动 惠普...
yolov5模型,yolov5量化模型,yolov5 FP16 FP32 INT8量化模型,yolov5s.onnx,yolov5s.pt,yolov5s.engine,yolov5s.trt,yolov5s_fp16.engine,yolov5s_fp16_int8_engine,yolov5s_int8.engine, 模型量化,各种量化版本...
将cfp-fp数据经过旋转对齐后制定到bin文件
松下PLC编程软件 FPWINPro7.0 FP-X编程软件 Control FPWIN Pro 7 适合 FP-X FPOR FP-E FP7 FP2 FP2SH FP-X0
打印机驱动 FP-550K_W10打印机驱动 FP-550K_W10打印机驱动 FP-550K_W10打印机驱动 FP-550K_W10打印机驱动 FP-550K_W10打印机驱动 FP-550K_W10打印机驱动 FP-550K_W10打印机驱动 FP-550K_W10打印机驱动 FP-550K_W10...
rda5807fp数控收音机51单片机
Python语言实现fp-growth算法,并绘图
FP5208、FP5208A 和 FP5208B 是适用于广泛工作的升压型拓扑开关稳压器电 压应用。他们提供内置的门驱动器引脚驱动外部 N-MOSFET。这个误差放大器的 非逆变输入连接到 0.6V 的精密参考电压。他们有可编程软启动时间由...
lisflood-fp最新版源码,C++,推荐Visual Studio 2019打开,使用CMake组织编译
This CFP Multi-Source Agreement (MSA) defines the CFP4 form factor of an optical transceiver to support 40Gbit/s and 100Gbit/s interfaces for Ethernet, Telecommunication and other applications....
FP-Growth算法原代码
写得非常好的FPGrowth程序,规范、简洁
Fast Report 5 Demo 针对fp3文件查看、编辑及转换格式。 FP3是FastReport创建的页面布局文件,包含报表设计文件。生成的报表一般用fp#格式进行存储。FP3格式文件类似于pdf格式文件。Fast Report Viewer 由 Fast ...
FPTree 机器学习 基于数据统计的分类算法数据处理代码
运动型PLC型号:FP-XH M4T16T,具有4轴脉冲输出,500pps。FP-XH M4L16T,具有4轴脉冲输出,4Mpps。支持2轴持直线插补,圆弧插补,3轴直线插补,3轴螺旋插补,同步控制(电子齿轮、电子离合器、电子凸轮控制) RTEX...