`
Lich_Ray
  • 浏览: 164188 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

FP 做数学统计题

阅读更多
今天布置的家庭作业还真是烦人!做完《数学之友》上“统计案例”一章所有习题。我的妈呀,算什么卡方、线性回归,公式繁琐地要命,按计算器都能把人按死。还是让电脑帮我做吧。
不用什么 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 遍数据然后手工计算预期岂不是很傻?!想想看怎么让我只输入一遍数据就得到所有的产生数据(设计一下数据结构而已)还有线性回归函数(其实只有这个才有那么一点点技术含量)。
分享到:
评论
2 楼 cookoo 2007-06-25  
sigma可以直接用foldr或foldl,省的做尾递归优化了。
1 楼 song8159 2007-06-23  
是玩un的吧,看你lich的头像。

相关推荐

    2019年西安五大名校铁一中数学3模A3.pdf

    18. 第19题是几何证明题,利用等腰三角形的性质证明EP=FP。 19. 第20题是实际问题与几何的结合,通过三角函数解决实际测量问题,求解大树高度。 21. 最后一部分没有给出具体内容,但从题目描述来看,可能是关于...

    校 高二数学12月月考试题(实验班)理 试题.doc

    【知识点】 1. 抛物线的性质:题目...以上知识点涵盖了高中数学的多个领域,包括函数、导数、几何、概率统计、数列、解析几何、立体几何、空间几何、概率论等,这些知识都是高二学生在学习过程中需要掌握的重点内容。

    计算机二级上机题库

    - `fclose(fp)`:这是用于关闭已打开文件的函数,`fp`是文件指针,调用`fclose()`确保文件被正确关闭。 2. 字符串处理: - `atoi()`:这是一个将字符串转换为整数的库函数,例如将"123"转化为整数123。 - `atof...

    江苏省江阴市��山湾实验学校2017_2018学年八年级数学下学期期中试题苏科版

    这篇资料是江苏省江阴市敔山湾实验学校2017-2018学年八年级数学下学期的一份期中试题,主要涵盖了初中数学的一些核心知识点,包括几何图形的性质、二次根式、概率、函数关系以及分式方程的解法。 1. **图形性质**:...

    计算机三级网络技术上机试题一百道.pdf

    【知识点详解】 ...通过以上知识点的详细解析,我们可以看出这些试题涵盖了计算机科学基础中的数据结构、算法、文件操作、逻辑判断、数学统计等多个方面,这些都是学习计算机网络技术时不可或缺的基础知识。

    龙岩市中考数学试题及答案解析版2精选.doc

    【知识点解析】 1. **有理数的乘方** - 题目中涉及了有理数的乘方运算,...以上是针对题目中涉及的各个知识点的详细解析,涵盖了有理数运算、实数比较、几何图形、概率统计、函数关系、几何变换等多个数学领域的内容。

    工程数学概率论(工程数学概率论)

    通过这些资料,学习者可以复习课堂内容,做练习巩固知识,并通过解答试题检验自己的理解程度。 总的来说,工程数学概率论是一门理论与实践并重的课程,它将概率论的理论工具与实际工程问题相结合,为解决复杂随机...

    广西南宁市第学2017 2018学年高二数学上学期期中试题 理(扫描版).doc

    【知识点详解】 1. **逆否命题**:在...这些知识点涵盖了高中数学中的重要概念,包括逻辑推理、几何图形、概率统计、解析几何、数列与函数、空间几何等多个方面。解答这些问题需要对高中数学有深入理解和熟练运用。

    数据挖掘问答题汇总.pdf

    Apriori方法是基于候选生成的频繁项集挖掘方法,FP-Growth是一种更为高效的频繁项集挖掘方法。 集成挖掘技术通过构造并结合多个学习器来完成学习任务,以期望获得比单一学习器更好的泛化性能。模糊集是处理模糊性的...

    贵州省思南中学2015_2016学年高二数学上学期第二次月考试题

    【知识点详解】 1. **双曲线的基本性质**:双曲线的标准方程为 \( \frac{x^2...这些题目涵盖了高中数学的多个重要概念,包括代数、几何、概率统计和逻辑推理。通过解决这些问题,学生能巩固和深化对这些知识点的理解。

    湖北省沙市中学2015-2016学年高二数学下学期第四次半月考试题文.doc

    11. 双曲线焦距与斜率:点F,F'是双曲线12124的左右焦点,根据双曲线焦距和焦半径公式,|MF'|=|MF|-2a,∠F'FP=60°,可以计算出|MF|=10,从而得出PF的斜率为-√3/3,选项C正确。 12. 抛物线焦点与斜率:抛物线x^2=2...

    湖南省2010年对口升学C语言考前专题训练

    在这道题中,我们需要填充一个程序来统计某文件文件中数字字符的个数。程序的主要逻辑是使用一个循环来读取文件中的每个字符,并判断该字符是否为数字字符。如果是数字字符,则将其统计。 填充后的程序如下所示: `...

    那年9月全国计算机等级考试二级C上机考试题库答案.pdf

    以上就是全国计算机等级考试二级C上机考试中涉及的主要知识点,包括C语言的基本操作、文件操作、链表创建、字符串处理以及数学算法的应用。在备考过程中,考生需要熟练掌握这些技能,以便在实际考试中能够灵活应对。

    大型百货商场会员画像描述内含设计文档和matlab源码.docx

    - **算法选择**:采用FP-Growth算法对会员消费明细数据进行关联分析,提取高置信度的商品组合。 - **关联规则应用**:基于分析结果,提出具体的促销建议,例如将高置信度的商品放置在同一区域内,调整某些商品的价格...

Global site tag (gtag.js) - Google Analytics