如何用Matlab/Python/Stata做簡單回歸分析

2020-12-14 騰訊網

來源:金融民工新語

作者:劉新宇

NO.1 |問題描述:

(1)簡單的描述性統計:均值、中位數等

(2)求出多個變量的相關係數矩陣

(3)求出簡單多元線性回歸的係數

(4)求出常見的回歸描述量:例如中心化R方、調整後R方

NO.2 |數據來源:

數據採用的是Pieters & Bijmolt(1997)的關於Consumer Memory for Television Advertising調查結果。這並不是重點,其實就可以簡單理解為現在有一個橫截面數據:y是unaid,x包括dur、ncb、rank、year這四個變量,我們現在關心的就是y跑在四個解釋變量的多元回歸模型。

NO.3 |Matlab的實現過程

原始碼:

load('recall.mat')

mean(Y)

median(Y)

corrcoef([unaid,dur,ncb,rank,year])

%Calcalate the coefficients of regression

N=2677;

X=[dur,ncb,rank,year,ones(N,1)];

Y=unaid;

beta=inv(X'*X)*X'*Y;

%Calculate the R-squared

%Uncentered R-squared:

Ru=(Yhat'*Yhat)/(Y'*Y)

%Centered R-squared:

Rc=1-(e'*e)/((Y-mean(Y))'*(Y-mean(Y)))

%adjusted R-squared:

Ra=1-((1/(N-k))*(e'*e))/((1/(N-1))*(Y-mean(Y))'*(Y-mean(Y)))

Matlab導入文件的格式是*.dat文件,而實現回歸的過程其實是基於矩陣的計算:第一段使用的median/mean/corrcoef都是matlab內置的函數,直接就可以用於求回歸中比較常見的描述性統計、相關係數矩陣;第二段就是求beta_ols的步驟了,定義好X和Y後就直接計算即可,因為matlab是個專用於科學計算的軟體,因此矩陣相乘、求逆、轉置都很方便(一會你看看下面的Python就知道為什麼說matlab方便);第三段就是帶入求各種R方的過程了, 其中很有意思的是求某個列向量的平方和,其實是直接用它的轉置再乘自身。

Matlab計算的結果在下面的工作區都能找到:

NO.4 |Python的實現過程

原始碼:

from pandas import Series,DataFrame

import pandas as pd

import numpy as np

d=pd.read_excel('data.xlsx')

#(a)Calculate the mean/median/correlation coefficients

print('mean of unaid is',d.unaid.mean())

print('median of unaid is',d.unaid.median())

mat_of_data=d.corr()

print('Correlation coefficient matrix is as follows\n',mat_of_data)

#Basic linear regression

N=2677

X=DataFrame({'dur':d.dur,'ncb':d.ncb,'rank':d.ran,'year':d.year,'cons':1})

y=d.unaid

def beta_ols_cal(first,last):#To define a process of calculating Beta_OLS

A=np.dot(first.T,first)

B=np.dot(first.T,last)

D=np.dot(B,C)

return D

beta_ols=beta_ols_cal(X,y)

print('The coefficient of dur is ',beta_ols[1])

print('The coefficient of ncb is ',beta_ols[2])

print('The coefficient of rank is ',beta_ols[3])

print('The coefficient of year is ',beta_ols[4])

print('The coefficient of _constant is ',beta_ols[0])

#Calculate R-squared for the regression model

yhat=np.dot(X,beta_ols)

uhat=y-yhat

k=5

R_unc=sum(yhat**2)/sum(y**2)

R_c=1-sum(uhat**2)/sum((y-np.mean(y))**2)

R_adj=1-((1/(N-k))*sum(uhat**2))/((1/(N-1))*sum((y-np.mean(y))**2))

print('Uncentered-R is ',R_unc)

print('Centered-R is ',R_c)

print('adjusted-R is ',R_adj)

看代碼長度就知道Python是這三種軟體中最負責的一個,但為什麼還要用Python呢?因為Python本質是編程軟體,科學計算不如matlab、計量專業程度不如stata,但是在抓取網絡爬蟲、處理批量數據的時候也有它的優勢。第一點:Python可以導入的數據類型很多,最常見的excel文件都可以讀取。第二點:這段Python命令其實內容挺無聊的,值得提兩句的是:Python支持矩陣的計算其實並不多(許是我沒找到,因為剛學一會...),所以在中間計算的時候就很麻煩,相比於matlab的矩陣計算簡直要麻煩到天上了,當然常見的描述性統計還是有相關第三方庫的。第三點:Python實現平方和的過程是sum(x**2)跟matlab完全不同,但殊途同歸咯。

Python的結果就可以在IDLE中看到如下結果:

NO.5 |Stata的實現過程

原始碼:

use "\Desktop\recall.dta",clear

sum

corr

reg unaid dur ncb rank year

hhhhhhhh 簡直不能更短。所以說常見的回歸直接用stata是最方便的,它其實是用基本的編程軟體寫成的,所以直接顯示回歸各項結果,對於不從事理論計量的人來說Stata好用許多。Stata的回歸結果如下:會匯報各項常用回歸量:F-test值、t值、MSE、SSR、R方等等。

總結:人生苦短,我用Python;人生苦短,我用Matlab;人生苦短,我用Stata。

關注「雄安學術」公眾號

相關焦點

  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    Mov 1-2在線編譯工具weblde使用之指南.mov 2-1如何在列表,字典,集合中根據條件.MOV 2-2 3 4命名 統計 字典.mov 2-5公共鍵.mov 2-6 如何讓字典保持有序.mov 2-7歷史記錄.mov 3-1 2迭代器.mov 3-3如何使用生成器函數實現迭代對象
  • 工業軟體之殤——MATLAB被禁用事件
    自中美貿易戰以來,兩國之間從政治、軍事、經濟、教科等領域的摩擦頻頻出現,尤其是從中國13所高校被美國列入「實體清單」以來,教科領域的摩擦更是達到了白熱化階段、2020年6月6日,哈工大、哈工程matlab軟體被禁用事件一發生,便引起了大範圍的轟動
  • Python真的值得學習嗎
    1991年初python公布了第一個公開發行版本。由於它是用C語言實現的,所以從一出生,Python已經具有了:類,函數,以及以模塊為基礎的拓展系統等。 尤其是2017年人工智慧概念的興起,python的關注度也是越來越高。儘管目前它仍然無法和java等程式語言抗衡,但隨著未來人工智慧權重的提高,掌握python也就成為一種必然。它的開發效率比 C, Java 高很多,很多的創業公司當初為了把想法快速變成現實產品從而獲得投資資金,首選 Python作為開發語言。這估計也是當年推動python流行起來的另一個原因吧。
  • Python入門指南教程:10天學會使用python做爬蟲!免費領取!
    從去年開始,公眾號鋪天蓋地的python廣告,讓很多行外人也知道了python這個東西,python語言開始變得無所不能,剛畢業的新手用python能做什麼?對於圈外人聽起來好像很有誘惑力,每天幾小時,學習下來能做很多很多牛逼的事,甚至升職加薪,人生趟贏。但是,事情真的這麼簡單嗎?前些天我弟弟突然聊天,推薦我學python,我把聊天截圖給了學計算機的楊先生。
  • 如何用線性回歸模型做數據分析?
    編輯導語:在日常工作中,很多時候都會用到數據分析的方法,線性回歸模型看起來非常簡單,但實際上它的十分重要;本文作者分享了關於如何用線性回歸模型做數據分析的方法,我們一起來學習一下。線性回歸應用於數據分析的場景主要有兩種:驅動力分析:某個因變量指標受多個因素所影響,分析不同因素對因變量驅動力的強弱(驅動力指相關性,不是因果性);預測:自變量與因變量呈線性關係的預測;模型數學形式:=0+11+22++
  • Python開發簡單爬蟲【學習資料總結】
    一、簡單爬蟲架構 簡單爬蟲架構 運行流程
  • 用python做個自我介紹(python入門教程)_邏輯教育
    本文涉及的python基礎語法為:數據類型等數字類型1. 字符串的拼接我們在上一章中已經簡單介紹了一下字符串的創建方式,這裡我們簡單學習一下字符串的運算和拼接。數據類型的轉換當我們想要print('秦始皇生於公元前' + 259 + '年 ' )時,我們發現出現了一下錯誤這是因為字符串和數字不能用普通的拼接方式,需要進行類型轉換才行。
  • 我們能用Python做什麼?學Python有前途嗎?
    我們能用Python做什麼?目前流行的大數據分析、數據科學、機器學習等行業,Python長期穩固第一陣營,甚至就是第一語言。不管從哪個方面來考慮,都應該選擇 Python。Python的就業方向方向一:利用python做爬蟲Python語言還可以寫爬蟲,但僅僅只是爬蟲的入門而已。
  • Python最佳經典學習路線
    如何學習Python python語言基礎:(帶你熟悉python語言的特性,學會使用python開發環境,使用python開發一些簡單的案例) (1)Python3入門,數據類型,字符串 (2)判斷/循環語句,函數,
  • 哈工大、哈工程無法使用 MATLAB 軟體
    MATLAB 能做什麼? 2、MATLAB強大的作圖功能 MTALAB具有強大的3D繪圖功能,函數調用簡單,並且很多功能都以工具箱的方式可供應用,即使是沒有接觸過MATLAB,學會繪製3D圖,也很容易。
  • stata統計學軟體IC\SE\MP版本的區別與選擇
    stata統計學軟體IC\SE\MP版本的區別與選擇主講:三文魚IC\SE\MP是啥?三個版本是逐步遞進的關係,功能比較 IC<SE<MP,1.stata IC這個版本在官方的解釋是"標準版"的意思,這版本支持2048個變量,給我們日常的使用已經足夠了。2.stata SE這個版本的官方解釋是"特別版"special edition的意思。但在國內幾乎75%的stata用戶都在用這個版本。
  • python數據挖掘常用工具有哪幾種?
    python數據挖掘常用工具有哪幾種? python有強大的第三方庫,廣泛用於數據分析,數據挖掘、機器學習等領域,下面小編整理了python數據挖掘的一些常用庫,希望對各位小夥伴學習python數據挖掘有所幫助。
  • 學習Python對辦公真的有用嗎?用經驗告訴你答案
    目前我在做兼職文案,以我的親身經歷為例,我可以很負責的告訴大家,學習python確實可以在某些方面提升你的工作效率,但是,並不是每個人都適合去學習它。去年9月份,我刷到朋友圈的python廣告,廣告語中宣傳的「高效、省時」很是吸引人。但是,促使我真正下定決心學python的,還是這些廣告中販賣的職場焦慮。
  • Python數據分析|線性回歸
    Python數據分析學習筆記,今天分享下利用Python對業務進行數據預處理,並利用線性回歸進行數據預測。①導入Python常用數據分析庫:常用的numpy、pandas、matplotlib先導入。②將待處理的數據讀取:read_excel進行Excel文件讀取,用sheet_name指定導入的sheet。
  • 15課python快遞編程代碼人Python語法簡單才會越來越被編程界歡迎
    ,我們就可以做出一些有用的程序了。我們來分析一下這個項目。分析流程,拆解項目我們的任務就是做一個「快遞配送調配程序」,雖然這朋友要的比較著急,但是我們也不著急於編程開發,應該先梳理清楚需求,做出的程序功能達到什麼樣的效果。計算器,首先配送站BOSS要輸入信息,然後自動計算出結果。為了搞清楚計算過程,我們得到計算公式。
  • 初學者如何用「python爬蟲」技術抓取網頁數據?
    在當今社會,網際網路上充斥著許多有用的數據。我們只需要耐心觀察並添加一些技術手段即可獲得大量有價值的數據。而這裡的「技術手段」就是指網絡爬蟲。 今天,小編將與您分享一個爬蟲的基本知識和入門教程:什麼是爬蟲?
  • python初學者必看的學習路線 Python是近幾年比較火的程式語言
    Python是近幾年比較火的程式語言之一,因為人工智慧的火爆,讓很多人都想從事python開發。很多零基礎學員在學習python的時候都會走一些彎路,下面小編就為大家分享python學習路線圖,幫助零基礎學員在學習的時候少走彎路。 很多人都在問Python學習步驟應該如何安排?
  • 聊聊量化分析工具
    後臺有不少人問到關於數據分析工具的問題,就做個統一回復,為想往這方向走的朋友提供一個參考。 基於行情軟體的公交 常見的行情軟體如通達信,大智慧,同花順等,都有編寫公式的功能,使用簡單的腳本語言,可編寫自定義指標,測試交易策略。
  • 開課吧:Python是什麼意思?為什麼有那麼多人學Python?
    python非常容易上手,而且能幹很多事情,WEB開發,機器學習人工智慧,數據分析,量化投資,爬蟲等,基本可以應用到各行各業,而且大家都在做基於PYTHON的庫,使得PYTHON語言變成一門直接拿來就能用的語言,更像一種工具了,比如機器學習,可能理論很複雜,但是實際在PYTHON中僅僅幾行代碼就能實現,不用花太多時間用在碼代碼上面,python 現在是越來越火