【思考题】回归分析的问题 :)
mathcad吧
全部回复
仅看楼主
level 12
朱老剑客 楼主
呵呵,我希望这个思考题能够引起@angelycs 的兴趣。
一共4个问题。
第一问:
我定的微信公众号今天讲回归分析,前面的线性回归什么的还能看懂,到后面说到了回归正则化方法就感觉太专业了,简直是云里雾里。各位有兴趣科普一下么?
第二问:
比如说,我用一个简单的二次函数加随机噪音之后生成了1000个数据点集A,然后从A中随机取500个数据点形成点集B,剩下的500个数据点为点集C,然后我分别对B和C进行二次多项式的拟合,得到的拟合系数八成不会一样吧,两次回归的效果与我一开始定义的二次函数相比较的,自然会有优劣之分,如此得到了一个回归误差Δ。然后我又重复上面的动作,得到另外两个相等的数据点集E和F,此时这个Δ还有效吗?
第三问:
如果我选择的数据点集不是相等的,比如说一个是200,一个是800;或者更极端些,一个是10,一个是990,我猜想这个Δ肯定会有所变化的,那么Δ的变化规律是什么?
第四问:
上面我用的是二次多项式做的实验,如果我用线性、三次多项式或其他基本函数做实验,所得到的Δ的变化规律会不会不一样呢?咱们就说多项式吧,Δ的变化规律与多项式的次数之间有没有什么观察上的或者必然的联系呢?另外Δ与我所加的噪音的性质有什么关系么?
以上都可以MC模拟出来,主要是看各位的建模能否有效达到研究的目的了。
2015年10月16日 17点10分 1
level 11
这个白天再回复吧,有些我也没弄太明白,正好借这机会好好想想。
2015年10月16日 17点10分 2
level 12
朱老剑客 楼主
这个题一开始就很难,就是这段:
用一个简单的二次函数加随机噪音之后生成了1000个数据点集A,然后从A中随机取500个数据点形成点集B,剩下的500个数据点为点集C。
我初步试了试,发现没有想象的那么简单。
造一个1000个元素的向量V:
我从V中取出第b个向量值放在v[i里,然后从V中再剪去第b个向量值,但i是有序的,b是无序的,结果就得到了下面这样的东西。
我试了其他方法,仍然没有得到想要的效果,各位也想想看吧。
2015年10月18日 02点10分 3
若一开始不把最终要解决问题说出来而是这样遇到一个问题提一个问题,要看到最好才能明白你要做什么。我也只好一个一个独立地谈下了。
2015年10月18日 08点10分
既然每个点是有两个坐标确定的,就应该把X坐标连同Y坐标一并取出来构成一个新矩阵。你只取Y坐标,再用自然数序列i做横坐标,当然不行。
2015年10月18日 08点10分
level 12
朱老剑客 楼主
嗯,这个可以转化成向一个1000个元素的0向量中,随机放入500个1,然后lookup就可以了。但是怎么随机放进去500个1,我还是没找到方法。 :(
2015年10月18日 02点10分 4
level 12
朱老剑客 楼主
想了一个比较蠢的方法,做一个向量vv存储V的序号,然后在trim V的同时trim vv,得到保存下来的V中的数值的原始序号,让它们对应的原有的V的元素都变成NaN,然后在从中剔除掉所有NaN的项,等到另外一个向量。
嗯,一看就很蠢,继续向各位征求更好的算法。
我试了用MC自带的二项式随机分布函数生成器,rbinom,没戏,即使我设定1的分布概率为0.5,得到的结果向量也不是严格的500个1,500个0。
2015年10月18日 03点10分 5
抛十次硬币,得到正面的次数符合二项分布,二项分布随机变量生成器不是用来在10次抛硬币的结果生成5次正面。这一点的理解上你和那个在π节时在ptc论坛上质疑随机数生成器的俄国人一样误会了概率。
2015年10月18日 08点10分
level 12
朱老剑客 楼主
嗯,5楼最后输出的那个trim(VA,matchNaN(VA))可以直接写成filterNaN(VA)。
2015年10月18日 04点10分 6
level 12
朱老剑客 楼主
嗯,咱们提高一些难度,如果把这1000个元素的向量随机分成n个近似相等的向量,该怎么做呢?
比如说,当我要分成5组,每组就是200个元素;我要分成7组,就生成6组142个元素的向量和1组148个向量的元素,等等。所有元素的值在原来1000个元素的向量中的位置都是随机分布的。
再提高一些难度,这就更贴近现实应用了。在总体数量为1000的对象里,我随机取10次样,每次取样量20个,而且要保证这10组样品之间不发生重复,应该怎么编程呢?
2015年10月18日 04点10分 7
抽样的时候并不要求已经抽到的数就不能再被抽到。如果是为了保证抽样不偏倚,可以设置分层抽样,把所有样本分成若干组,然后每个组内重复抽若干个数据,这些数据在组内可以被重复抽到。
2015年10月18日 09点10分
你的目的应该还是前面说的从1000个数中标志出500个来,这1000个数若已经是观察值,直接拟合就行了,如果嫌数据量不够,用bootstrap方法在这1000个数中随机抽数构成多个新的样本来分析。
2015年10月18日 09点10分
level 12
朱老剑客 楼主
再往后就是怎么做函数的事儿了,我举个仍旧比较蠢的例子:
然后计算各自拟合结果的皮尔森相关系数,然后找规律,这些就是纯粹的统计学上的研究了。我感觉结果一定会很有意思,样本空间的大小是如何影响到回归分析的精度的,如果能够找到一个规律,或者说能够验证现有的某个统计学上的理论,一定会让统计学界对咱们MC吧刮目相看的。至少发表一篇硕士论文应该没问题了吧。
嗯,我对7楼的问题更感兴趣一些,昨天我看Khan Academy的统计学课程,里面就有一个人用java编了这么一个小程序,主要是这个程序是exclusive的,排他的,如果用1stOpt的话,直接一句“exclusive”就可以告诉电脑不要发生重复取样的情况,但在MC中怎么实现呢?或者说怎么有效的实现呢?
2015年10月18日 05点10分 8
而且我感觉解决7楼的问题,会和LNSZDZG提出的构造数独问题,殊途同归。
2015年10月18日 05点10分
拟合后要做假设检验验证拟合是否理想,要做估计量和预测值的置信区间,这方面的理论基础比较艰深,但方法是现成的,探索空间不大。挖掘规律那是机器学习的范畴,光靠拟合数据还不够。
2015年10月18日 09点10分
回复
angelycs
:哎怎么老是自动回复到这层楼呢?
2015年10月18日 11点10分
level 12
朱老剑客 楼主
还有一个更有挑战性的问题,在3楼,我对那个二次函数所加的噪音仅仅是y轴方向上的,当函数的斜率绝对值很大的时候,甚至当函数为垂直于x轴的时候,像我这么加噪音将是无效的,那么怎么才能根据函数的导数自动选择函数曲线的垂直方向添加噪音呢?
如果这个问题不能解决的话,上面所得到的所有结论都将是错误的。
为了让问题更直观,我给一个示意图:
这是两个圆,如果按照3楼的添加噪音的方法,我将得到A中黄色的部分,而我实际想得到的是B中粉色的部分。对于任意连续单调函数怎么做?
2015年10月18日 05点10分 9
样本值应该不会垂直于x轴,随机误差只会作用在观察值上。比如横坐标是观察时间,纵坐标是观测值,随机误差只会让观测值在y方向上下移动,不会在时间轴上移动。
2015年10月18日 10点10分
level 12
朱老剑客 楼主
嗯……就是一般的复数变换。
还是继续讨论第8楼的问题吧。
2015年10月18日 08点10分 10
M040是不是增强了2D图绘制,这个圆这么大看上去却没发现什么锯齿,很平滑的样子,这在M030是见不到的!
2015年10月19日 11点10分
level 11
先跑步去了。
2015年10月18日 09点10分 11
level 12
朱老剑客 楼主
嗯,我也是边做这个题边发现一些有意思的新问题的。问题已经在主楼提出了,然后我只是个做题者。没有别人参与这道题,只有我一个人做,同时又把自己发现的新问题提出来,就会让你产生我在修改问题的误会吧。归根结底,还是因为做题的人少吧。
另外,根据一个问题推广出更多的有意思的新问题,这正是数学的研究方法,否则所谓的某某猜想能够推动整个学科的进步这事儿,如果都是就事论事的话,也就不会发生了。
2015年10月18日 09点10分 12
level 12
朱老剑客 楼主
思考题是为了促进大家思考的,如果仅仅是做题,那也就没什么意思了。
2015年10月18日 09点10分 13
level 12
朱老剑客 楼主
angelycs提出的对x,y坐标同时进行取样的方法不错,在更多次取样的时候可以避免递归了。
2015年10月18日 10点10分 14
level 11
这个可以这样玩儿:
你随意设置一个确定的函数f(x),再设置一个正态随机变量ε(x),f(x)代表某个因变量和自变量在现实中真正的关系,ε(x)代表每次用仪器测量因变量的值时的随机误差,f(x)+ε(x)就是现实中实际观察到的结果。(随机误差通常服从正态分布而不是均匀分布)
接着从区间[a,b]内随机生成1000个数,代入f(x)+ε(x)计算出1000个样本值来。
然后只公布这1000个样本值,f(x)和ε(x)不要公布。
拿这1000个数做回归分析,推断原始的f(x)的形式以及随机误差ε的参数,并预测在区间[a,b]内取某个值时,对应的观测值的区间。
上面的玩法玩的是有确定性关系的变量,这种有确定关系y=f(x)的两个变量,它们代表的是绝对的因果关系,比如牛顿第二定律(在高速下也不是确切的因果关系F=ma)。
但这在现实世界中并不多见,更多的都是些只有相关关系没有确定关系的变量,比如身高和体重,身高高的往往体重更重,但并不绝对,还有年龄与血压,冰淇淋销量与犯罪率等等。回归分析在这方面的应用更有意思。
不过当前还是那确切关系的y=f(x)玩吧。
2015年10月18日 10点10分 15
x的二次多项式可以经过变量转换化成二元线性回归模型,本质是线性回归,而现实中还有一大堆本质不是线性模型的变量,不能按线性回归的方法来分析,唉,要学的太多,这部分越来越艰深,数学底子不行,好多我都看不懂了,只知道现成的公式,不理解前人的分析方法更不会举一反三应用于实际问题建模。
2015年10月18日 11点10分
level 12
朱老剑客 楼主
确实被angelycs说得好玩儿了!我是真不懂的,就是觉得有意思就想试试看哈。
2015年10月18日 11点10分 16
level 12
朱老剑客 楼主
那没事儿,数学问题都交给MC好了,关键是思路,数学什么的都是次要的。
2015年10月18日 11点10分 17
level 11
那咱们就先抛开那些已有的公式,让我们想想前人的思路吧。
第一个问题,前人遇到了什么样的难题导致他们最终发明了回归分析?
18世纪19世纪,天文学和测地学发展得如火如荼,人类视线延长到宇宙,脚印开始踏遍世界各地,有了许多观测数据。
按说观测手段多了数据多了,应该更好地分析客观规律才对,比如要计算某某行星轨道,方程已经有了,就差计算其中的某几个系数了,要是没数据怎么解方程求系数?比如地球不是个正圆球而有一定椭度,有了理论模型只需测量不同地点经线上一度的弧长就可以解方程求出来,不先量一量怎么计算?
但是,数据多了还真是让人头痛了,有两个方面的原因。
第一个,很多预先设想的模型只是数学上的近似而并非严格成立,模型本身就有误差,数据并不能很好地吻合那些方程。
第二个,观测到的数据本身也有误差,即便理论模型是对的,这些数据并不能帮助人们得出唯一的解。
当时某位研究员遇到了这样的事,这里有一个2元1次方程组,未知数是某数学模型里的关键系数,正好他手上只有两个观测数据,他把值代进去解出了唯一解,非常高兴,准备发表论文,但是为了实验结果能被重复验证,第二天他又进行了两次观测,得到两个观测数据,再代入方程组计算,结果得出了与昨天不同的两个解,这下他高兴不起来了。
到底哪个解才是关键系数的确切值?
这就好比记录明朝历史的资料太多,而且其中还有矛盾,研究明朝的史实就比那些资料少的朝代更困难,因为不能确定那一本上记录的历史才是真的。
从数学的角度讲,就是你要解一个二元一次方程组,但是方程组里的方程数量远远多于2个,比如,1000个。
就比如3楼的数据,每个数据都是从f(x)=ax1+bx2中计算出来的(x2=x²,通过变量转换化成二元线性方程),现在不知道a和b是多少,我们把这1000个观测值代入这个方程得到一个有1000个方程的方程组,如果没有随即误差捣乱这个方程组是严格成立且有唯一解的,但由于有随机误差混在观测值里,这个方程组是矛盾的,要怎么从这个线性矛盾方程组中解出a和b来?
手机打字真累!
2015年10月18日 12点10分 18
嗯写到后面才发现,这里第一个标题误导大家了。这个难题并没有导致回归分析的诞生。
2015年10月20日 12点10分
level 12
朱老剑客 楼主
我在手机上用搜狗拼音的滑动输入模式,没觉得累,打你上面这段字儿不比用键盘打的慢。
2015年10月18日 12点10分 19
我是触宝T+键盘打双拼,重码率太高。
2015年10月18日 13点10分
不过我已经在文本编辑器里全部输入完成,只需要粘贴了,哈,马上秒发。
2015年10月18日 13点10分
level 11
第二个问题,怎么办呢?
随便取两个观测值计算一下?不行,还有那么多别的观测值不支持这两个解。把1000个观测值分成两组,把每组500个方程相加得到一个只有两个方程的方程组,解这个方程组行不行?(有人这么干干了并且一度是主流处理方法)
必须要想一个办法来确定哪个解是这个方程最好的解!
欧拉,拉普拉斯,这两位大牛在这个问题上没什么建树。
欧拉得到一个包含8个未知数的关系式,他手上有人类160年期间观察到的75组数据,他试图从中解出这八个未知数,但据说其方法杂乱无章缺乏基本合理性。
拉普拉斯稍好一点,未知数4个,数据有24组,他采取的方法是,把这24个方程转换成4个方程
第一个:24个方程的和
第二个:前12个之和减去后12个之和
第三个:编号3,4,10,11,17,18的方程之和减去编号1,7,14,20的方程之和。
第四个:编号2,8,9,15,16,21,22的方程之和减去编号5,6,12,13,19的方程之和。
解这个新的方程组。
但是拉普拉斯也说不出这样组合的方法有什么道理和通用性。
大牛也不行了。
2015年10月18日 13点10分 20
1 2 尾页