【回归分析】[9]--加权最小二乘法
来源:互联网 发布:mac个人文件存放在哪里 编辑:程序博客网 时间:2024/05/12 19:16
[回归分析][9]--加权最小二乘法
这一节会讲一下关于加权最小二乘法,这种方法是用来处理 ”异方差“ 的。如下图
关于处理的方法:
例子:我们来看一个直观的例子
1.构造一组数据
x = Table[i, {i, 1, 1000}];y = Table[2*i + RandomInteger[PoissonDistribution[Ceiling[i/100.0]]], {i, 1,1000}];
2.对数据拟合
data = Transpose[{x, y}];Clear[x];lm = LinearModelFit[data, x, x]
3.画出残差
cancha = lm["FitResiduals"];p1 = ListPlot[cancha]
4.按类别,看一下彩色的图
temp = {};For[i = 1, i <= 10, i++, temp = AppendTo[temp, cancha[[100*i - 99 ;; 100*i]]] ];dataList = Transpose[{Range @@ #[[1]], #[[2]]}] & /@ Transpose@{# + {1, 0} & /@ Partition[Accumulate[Length /@ Prepend[temp, {}]], 2, 1], temp};p4 = ListPlot[dataList]
可以看到残差随着x的增大而增大。
5.求出加权的系数
计算总的残差
canchaTotal = Total[Abs[cancha]]/Length[cancha]
计算每一组的残差
canchazu = Table[0, {i, 1, 10}];For[i = 1, i <= 10, i++, canchazu[[i]] = Total[Abs[cancha[[100*i - 99 ;; 100*i]]]]/99 ]
计算系数
xishu = canchazu/canchaTotal
计算权重
weight = Table[xishu, {i, 1, 100}];weight = Flatten@Transpose[weight];
6.对加权后的重新拟合
lmn = LinearModelFit[data/weight, x, x]
查看其残差
temp = {};For[i = 1, i <= 10, i++, temp = AppendTo[temp, canchan[[100*i - 99 ;; 100*i]]] ]dataList = Transpose[{Range @@ #[[1]], #[[2]]}] & /@ Transpose@{# + {1, 0} & /@ Partition[Accumulate[Length /@ Prepend[temp, {}]], 2, 1], temp};p3 = ListPlot[dataList, ImageSize -> Medium]
可以看到残差比之前要好一点
可以放在一起比较一下
Row[{p4, p3}]
有较为明显的区别。
以上,所有
2016/11/20
0 0
- 【回归分析】[9]--加权最小二乘法
- 加权最小二乘法与局部加权线性回归
- 机器学习--最小二乘法和加权线性回归
- 最小二乘法的概率模型解释与局部加权回归
- 【回归分析】[2]--线性回归和最小二乘法
- 基于最小二乘法的线性回归分析
- matlab 局部加权回归
- 详解局部加权回归
- 局部加权回归
- 局部加权线性回归
- 局部加权回归
- 局部加权回归
- 局部加权回归
- 局部加权回归
- 局部加权线性回归
- 局部加权回归
- 局部加权回归
- 局部加权回归
- 自定义ProgressBar(圆形)
- POJ1062昂贵的聘礼
- 51nod1459 dijkstra
- 求一个矩阵的最大子矩阵
- MATLAB语句结束中逗号与分号的区别
- 【回归分析】[9]--加权最小二乘法
- Flume笔记二之source,channel,sink
- 数据结构-广义表
- RecyclerView的使用
- 初学者写java代码要注意代码规范:
- leetcode-20. Valid Parentheses
- 在Eclipse中使用JUnit4进行单元测试(高级篇)
- OpenGL ES着色语言-光照效果之散射光
- ExtJS5 Grid组件扩展