1. 程式人生 > >多元線性迴歸資料篩選問題

多元線性迴歸資料篩選問題

前幾天,偶然在網上看到,建立多元線性迴歸時須對其中的異常資料進行篩選剔除,那這裡的異常點指的是什麼呢?這裡的異常點指的是人為採集資料誤差或者某些異常的個例等等一些不太準確的資料。

例子說明

例如,對於下表中的一些資料我們來進行資料篩選。
在醫學上,糖尿病人的血糖量y(mmol/L)與總膽固醇 1 X (mmol / L),甘油三脂X2(mmol/L)胰島素X3(μU/ml)糖化血紅蛋白X4(等有關。附表中是某醫院的原始資料。我們將對其中的異常資料進行篩選。

血糖 總膽固醇 甘油三脂 甘油三脂 胰島素
11.2 5.68 1.9 4.53 8.2
8.8 3.79 1.64 7.32 6.9
12.3 6.02 3.56 6.95 10.8
11.6 4.85 1.07 5.88 8.3
13.4 4.6 2.32 4.05 7.5
18.3 6.05 0.64 1.42 13.6
11.1 4.9 8.5 12.6 8.5
12.1 7.08 3 6.75 11.5
9.6 3.85 2.11 16.28 7.9
8.4 4.65 0.63 6.59 7.1
9.3 4.59 1.97 3.61 8.7
10.6 4.29 1.97 6.61 7.8
8.4 7.97 1.93 7.57 9.9
9.6 6.19 1.18 1.42 6.9
10.9 6.13 2.06 10.35 10.5
10.1 5.71 1.78 8.53 8
14.8 6.4 2.4 4.53 10.3
9.1 6.06 3.67 12.79 7.1
10.8 5.09 1.03 2.53 8.9
10.2 6.13 1.71 5.28 9.9
13.6 5.78 3.36 2.96 8
14.9 5.43 1.13 4.31 11.3
16 6.5 6.21 3.47 12.3
13.2 7.98 7.92 3.37 9.8
20 11.54 10.89 1.2 10.5
13.3 5.84 0.92 8.61 6.4

具體做法如下:
我們先通過Matlab對原始資料進行檢驗,對殘差進行分析,得到了殘差分析圖,剔除其中的異常點。
這裡寫圖片描述
從圖上可以看出,第13個點和第27個點是異常點,這樣在做資料處理時就可以將其剔除。
下面是我遇到的一些問題:

  • 至今沒有找到這個演算法的數學原理,沒看到書上有殘差向量的相關介紹。
  • Matlab程式是改進網上的開源程式而來的,從程式中看不出他為什麼要這麼做。
  • 這種篩選資料的方法是否只適應於線性迴歸,非線性迴歸是否也可以借鑑。

Matlab程式碼

clear all;
clc;

%輸入資料
z=xlsread('data.xls');
z1=z;
y=z(:,1);
X=[ones(size(y)),z(:,2:5)];
alpha=0.05;
b=inv((X'*X))*X'*y;  %迴歸係數
[n,ncolX] = size(X);

%剔除異常資料
wasnan=(isnan(y)|any(isnan(X),2));
havenans=any(wasnan);
[Q,R,perm]=qr(X,0);
p=ncolX;
RI=R\eye(p);
nu=max(0,n-p);
yhat=X*b;
r=y-yhat;  %殘差
normr=norm(r);
rmse=normr/sqrt(nu);    % Root mean square error.
tval=tinv((1-alpha/2),nu);
s2=rmse^2;
hatdiag=sum(abs(Q).^2,2);
ok=((1-hatdiag)>sqrt(eps(class(hatdiag))));
denom=(nu-1).*(1-hatdiag);
sigmai=zeros(length(denom),1);
sigmai(ok)=sqrt(max(0,(nu*s2/(nu-1))-(r(ok).^2./denom(ok))));
ser=sqrt(1-hatdiag).*sigmai;
rint=[(r-tval*ser) (r+tval*ser)];
rcoplot(r,rint);
kk=[];
for i=1:n
    if (rint(i,1)>0&&rint(i,2)>0)||(rint(i,1)<0&&rint(i,2)<0)
       kk=[kk,i]; 
    end
end
X(kk,:)=[];
y(kk)=[];

%剔除異常點後,求解迴歸係數
beta=inv((X'*X))*X'*y;  %迴歸係數

%迴歸分析
X1=X;
X1(:,1)=[];
n=size(y,1);    %觀察單位數
m=size(X,2);    
p1=m-1;          %自變數個數

alpha=0.05;  
yhat=X*beta;

%方差分析表(F檢驗)
SSR=(yhat-mean(y))'*(yhat-mean(y));  %迴歸平方和

SSE=(yhat-y)'*(yhat-y);        %殘差平方和

SST=(y-mean(y))'*(y-mean(y));    %總平方和

Fb=(SSR/(m-1))/(SSE/(n-m));       %顯著性檢驗的統計量

Falpha=2*(1-fcdf(abs(Fb),m-1,n-m));

table1=cell(4,6);    %建立元胞
table1(1,:)={'模型','偏差平方和','自由度','均方','F值','F.Sig'};
table1(2,1:6)={'迴歸',SSR,m-1,SSR/(m-1),Fb,Falpha};
table1(3,1:6)={'殘差',SSE,n-m,SSE/(n-m),[],[]};
table1(4,1:3)={'總和',SST,n-1};

C=diag(inv((X'*X)));
bj2=beta.*beta;     %迴歸係數平方
SSj=bj2(2:end)./C(2:end);     %偏回歸係數平方和

%決定係數檢驗
R2=SSR/SST;   %決定係數
R=sqrt(R2);   %複相關係數
RC=1-(1-R2)*(n-1)/(n-1-p1);
Sy=sqrt(SSE/(n-m));   %剩餘標準差
table2=cell(2,5);    %建立元胞
table2(1,:)={'模型','R','R平方','校正決定係數','剩餘標準差'};
table2(2,1)={1};
table2(2,2)={R};
table2(2,3)={R2};
table2(2,4)={RC};
table2(2,5)={Sy};

%t檢驗
s=zeros(m,1);       %迴歸係數的標準誤差
for i=1:m
    s(i,1)=sqrt(C(i))*sqrt(SSE/(n-m));
end

mnX=mean(X1);
MNX=repmat(mnX,n,1);   %複製mnX到矩陣MNX中
Ljj=diag((X1-MNX)'*(X1-MNX));     %Ljj的對角線元素為(X1-MNX)'*(X1-MNX)
Pj=beta(2:end).*sqrt(Ljj/SST);   %標準偏回歸係數;

t=zeros(m,1);
for i=1:m
    t(i,1)=beta(i,1)/s(i,1);
end

p2=zeros(m,1);
for i=1:m
    p2(i,1)=2*(1-tcdf(abs(t(i,1)),n-m));
end

table3=cell(m+1,6);    %建立元胞
table3(1,:)={'模型','偏回歸係數','迴歸係數的標準誤差','標準偏回歸係數','t值','P值'};
table3(2,:)={'常量',beta(1,1),s(1,1),[],t(1,1),p2(1,1)};

for kk=1:m-1
    table3(kk+2,:)={['x',num2str(kk)],beta(kk+1,1),s(kk+1,1),Pj(kk,1),t(kk+1,1),p2(kk+1,1)};
end

disp('係數分析表');
disp(table3);
disp('模型彙總');
disp(table2);
disp('方差分析表');
disp(table1);

相關推薦

多元線性迴歸資料篩選問題

前幾天,偶然在網上看到,建立多元線性迴歸時須對其中的異常資料進行篩選剔除,那這裡的異常點指的是什麼呢?這裡的異常點指的是人為採集資料誤差或者某些異常的個例等等一些不太準確的資料。 例子說明 例如,對於下表中的一些資料我們來進行資料篩選。 在醫學上,糖尿

#使用SAS進行變數篩選、模型診斷、多元線性迴歸分析 #

 轉載, 太經典了,學習了 第一節 多元線性迴歸分析的概述   迴歸分析中所涉及的變數常分為自變數與因變數。當因變數是非時間的連續性變數(自變數可包括連續性的和離散性的)時,欲研究變數之間的依存關係,多元線性迴歸分析是一個有力的研究工具。   多元迴歸

資料(四十一)機器學習【多元線性迴歸例項】

一、前言         保險公司對個人投保時或根據歷史資料生成的模型來計算個人保費,那麼本次我們就以這個模型的求解過程為例來實踐下多元線性迴歸。 二、資料&簡單分析         我們已經獲取到保險公司部分資料,檔名為insurance.csv,檔案內容如下

tensorflow 做多元線性迴歸時怎樣對非資料資料(分型別資料)進行處理(編碼)

程式碼如下:def read_data(file_queue):    '''    the function is to get features and label (即樣本特徵和樣本的標籤)    資料來源是csv的檔案,採用tensorflow 自帶的對csv檔案的處

matlab做三維線性擬合(多元線性迴歸,準確來說不叫插值)

matlab三維擬合(多元線性迴歸) 問題描述 今天同學問了我一個問題,大概意思是給了你三列輸入資料,一列輸出資料,想用一個線性超平面做一個最小二乘擬合(注意這裡不能叫插值)。 一點思考 剛聽到這個問題,同學說的是做插值,說想要做一個插值,這種說法不準確的,不想說迴歸的話

Bobo老師機器學習筆記第五課-多元線性迴歸

思維導圖學習筆記 自己參考BoBo老師課程講解實現: # -*- coding: utf-8 -*- import numpy as np from metrics import r2_score class LinearRegression(object): def __

7.線性迴歸多元線性迴歸

概念: 當自變數有多個時,迴歸模型就變成了: 多元迴歸方程變為: 估計多元迴歸方程變為: 估計方法: 多元迴歸的求解比簡單線性迴歸複雜但是思路是相同的,運用最小二乘法進行相應的求解,這裡不再進行展開。 python實現的小例子: 問題:如故一

Python金融系列第五篇:多元線性迴歸和殘差分析

作者:chen_h 微訊號 & QQ:862251340 微信公眾號:coderpai 第一篇:計算股票回報率,均值和方差 第二篇:簡單線性迴歸 第三篇:隨機變數和分佈 第四篇:置信區間和假設檢驗 第五篇:多元線性迴歸和殘差分析 第六篇:現代投資組合

Tensorflow之多元線性迴歸問題(以波士頓房價預測為例)

一、根據波士頓房價資訊進行預測,多元線性迴歸+特徵資料歸一化 #讀取資料 %matplotlib notebook import tensorflow as tf import matplotlib.pyplot as plt import numpy as np

sklearn的快速使用之四(多元線性迴歸

from sklearn.linear_model import LinearRegression   X = [[1,1,1],[1,1,2],[1,2,1]] y = [[6],[9],[8]]   model = LinearRegression() r = model.f

ND4J求多元線性迴歸以及GPU和CPU計算效能對比

上一篇部落格《梯度下降法求多元線性迴歸及Java實現》簡單了介紹了梯度下降法,並用Java實現了一個梯度下降法求迴歸的例子。本篇部落格,嘗試用dl4j的張量運算庫nd4j來實現梯度下降法求多元線性迴歸,並比較GPU和CPU計算的效能差異。     一、ND4J簡介 &nb

梯度下降法求多元線性迴歸及Java實現

 對於資料分析而言,我們總是極力找數學模型來描述資料發生的規律, 有的資料我們在二維空間就可以描述,有的資料則需要對映到更高維的空間。資料表現出來的分佈可能是完全離散的,也可能是聚整合堆的,那麼機器學習的任務就是讓計算機自己在資料中學習到資料的規律。那麼這個規律通常是可以用一些函式來描述,

吳恩達機器學習(二)多元線性迴歸(假設、代價、梯度、特徵縮放、多項式)

目錄 0. 前言 學習完吳恩達老師機器學習課程的多變數線性迴歸,簡單的做個筆記。文中部分描述屬於個人消化後的理解,僅供參考。 0. 前言 多元線性迴歸(Multivari

【機器學習筆記02】最小二乘法(多元線性迴歸模型)

數學基礎 1.轉置矩陣 定義: 將矩陣A同序數的行換成列成為轉置矩陣ATA^TAT,舉例: A=(1203−11)A=\begin{pmatrix} 1 &amp; 2 &amp; 0 \\ 3 &amp; -1 &amp;

線性迴歸資料分析

進入機器學習階段後第一次接觸線性迴歸,感覺線性迴歸其實就是通過有限的離散性資料,找到一條線,使得儘可能多的離散點,分佈線上附近的區域,以此來預測出現在未知位置的點的分佈情況,從而預測出你要評估的目標值 三大步: 一、準備資料,將得到的資料進行初步的處理,使得其滿足,下一步

多元線性迴歸方程原理及其推導

多元線性方程原理及推導 概念 1.在統計學中,線性迴歸方程是利用最小二乘函式對一個或多個自變數之間關係進行建模的一種迴歸分析。這種函式是一個或多個稱為迴歸係數的模型引數的線性組合。只有一個自變數的情況稱為簡單迴歸,大於一個自變數的情況叫多元迴歸。 2.線上性迴歸

機器學習--線性迴歸1(一元線性迴歸多元線性迴歸,誤差性質)

前面幾節都是監督學習方面的演算法,監督學習是指有目標變數或預測目標的機器學習方法,迴歸與分類的不同,就在於其目標變數是連續數值型,而分類的目標變數是標稱型資料,其實前面的Logistic迴歸就是迴歸的一種,他們的處理方法大同小異,在這裡系統的講解一下回歸的來龍去脈,理解影響迴

常用演算法一 多元線性迴歸詳解1(推導過程)

常用演算法一   多元線性迴歸詳解1       此次我們來學習人工智慧的第一個演算法:多元線性迴歸.文章會包含必要的數學知識回顧,大部分比較簡單,數學功底好的朋友只需要瀏覽標題,簡單瞭解需要哪些數學知識即可. 本章主要包括以下內容         數學基礎知識回顧

吳恩達機器學習練習1——多元線性迴歸

機器學習練習1——多元線性迴歸均值歸一化代價函式梯度下降練習1資料集均值歸一化代價函式梯度下降正規方程 多變數線性迴歸 均值歸一化 代價函式 梯度下降 練習1 資料集 x1:the size of the house (in square fee

吳恩達-機器學習(2)-多元線性迴歸、正規方程

文章目錄 Multivariate Linear Regression 特徵縮放 學習率 多項式迴歸(Ploynomial regression) Normal Equation