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

2021-01-11 騰訊網

來源:金融民工新語

作者:劉新宇

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。

關注「雄安學術」公眾號

相關焦點

  • 零基礎的同學如何用stata做一元線性回歸模型?
    stata軟體越來越受研究生的喜歡,很多研究生在做統計研究、學術分析的時候,也多選用此軟體。網上有關stata的教程有很多,但對於沒有基礎的同學來說,學起來稍微就有些吃力了。那麼,零基礎的同學應該如何學習呢?如何用stata做出滿意的一元線性回歸模型呢 ?
  • 零基礎的同學如何用stata做多元線性回歸模型?
    上一期,我們分享了如何用stata做一元線性回歸模型,不知道同學們學的怎麼樣呢?有沒有自己動手操作一遍呢?這一期:我們將學習如何用stata做多元線性回歸模型!這些是小王(邀請者)最近學習計量時的一些心得和體會,希望能與大家一起分享。
  • 零基礎的同學如何用Stata做logistic回歸?
    同學們在做統計研究時,時常聽到身邊的朋友會提及一個詞:logistic回歸。聽的次數久了,同學們多半會思考:什麼是logistic回歸?如何在Stata中做logistic回歸呢?簡而言之,logistic回歸模型中,因變量是二分類變量或者是多分類變量,而自變量既可以是分類變量,也可以是連續變量。二分類的logistic回歸用途也較為廣泛。做logistic回歸時應注意什麼?在做logistic回歸之前,一定要對數據變量進行檢查,要滿足相應的條件。第一個條件:Y是二分類的分類變量。第二個條件:Y的發生率要要小於15%。
  • 原創案例:Matlab多元線性回歸分析-逐步回歸
    在多元線性回歸分析中,逐步回歸法是對多個變量進行分析的有效方法。逐步回歸的基本思想是逐個引入自變量,保留影響顯著的變量,剔除影響不顯著的變量,最終使得回歸方程擬合度趨於完美。在Matlab中,函數stepwise的功能就是對需要分析的變量進行逐步回歸,最後得出回歸方程各個擬合信息。Stepwise的簡單用法是stepwize(X,Y),X是由若干個自變量列向量組成的矩陣,Y是由因變量構成的列向量。
  • 一元線性回歸分析python - CSDN
    python多重線性回歸分析多重線性回歸分析定義多重線性回歸模型:Mulitiple Linear Regression多元線性回歸模型:MultivariateLinear Regression數據準備#多重線性回歸#數據準備import pandas as pddf=pd.read_csv('e:/python/out/corr.csv',encoding='utf8')df根據預測目標,確定自變量和因變量#多重線性回歸
  • 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如何使用生成器函數實現迭代對象
  • python一元線性回歸分析專題及常見問題 - CSDN
    python多重線性回歸分析多重線性回歸分析定義多重線性回歸模型:Mulitiple Linear Regression多元線性回歸模型:MultivariateLinear Regression數據準備#多重線性回歸#數據準備import pandas as pddf=pd.read_csv('e:/python/out/corr.csv',encoding='utf8')df根據預測目標,確定自變量和因變量#多重線性回歸
  • 如何用線性回歸模型做數據分析?
    編輯導語:在日常工作中,很多時候都會用到數據分析的方法,線性回歸模型看起來非常簡單,但實際上它的十分重要;本文作者分享了關於如何用線性回歸模型做數據分析的方法,我們一起來學習一下。
  • Stata 15 統計數據分析軟體
    Stata 是一套提供其使用者數據分析、數據管理以及繪製專業圖表的完整及整合性統計軟體。它提供許許多多功能,包含線性混合模型、均衡重複反覆及多項式普羅比模式,用Stata繪製的統計圖形相當精美。該程序適用於處理時間序列、面板和橫斷面數據。
  • 如何用EXCEL線性回歸分析法快速做數據分析預測
    回歸分析法,即二元一次線性回歸分析預測法先以一個小故事開始本文的介紹。十三多年前,筆者就職於深圳F集團時,曾就做年度庫存預測報告,與筆者新入職一臺籍高管Edwin分別按不同的方法模擬預測下一個年度公司總存貨庫存。令我吃驚的是,本人以完整的數據推算做依據,做出的報告結果居然與僅入職數周,數據不齊全的Edwin制定的報告結果吻合度達到99%以上。仍清楚記得,筆者曾用得是標準的周轉天數計算公式反推法,而Edwin用的正是本文重點介紹的二元一次線性回歸分析法。
  • python多重線性回歸分析
    一個簡單的線性回歸模型測試。定義:線性回歸是利用數理統計中回歸分析,來確定兩種或兩種以上變量間相互依賴的定量關係的一種統計分析方法,運用十分廣泛。表達形式為y =aX+b,b為誤差服從均值為0的正態分布,a為截距。
  • 8種用Python實現線性回歸的方法,究竟哪個方法最高效?
    大數據文摘作品作者:TirthajyotiSarkar編譯:丁慧、katherine Hou、錢天培說到如何用Python執行線性回歸,大部分人會立刻想到用sklearn的linear_model,但事實是,Python至少有8種執行線性回歸的方法,sklearn並不是最高效的。
  • 科悟學院介紹什麼是Python、python能做什麼?
    這是很多人想知道的,今天小編就給你揭秘一個行業——Python(AI人工智慧),有人會問python到底是什麼?能做什麼?下面科悟學院介紹什麼是python和python能做什麼,希望對於正在學習的你有所幫助。
  • Python開發簡單爬蟲【學習資料總結】
    一、簡單爬蟲架構 簡單爬蟲架構 運行流程
  • 如何用matlab對信號進行傅立葉變換
    傅氏變換分析是信號分析中很重要的方法,藉助matlab可以很方便的對各類信號進行傅氏頻域分析。
  • 免費資源|stata 16 中文版,32G統計和meta教程24h免費領
    點擊藍字↑↑↑「FreeScience聯盟」,輕鬆關注不迷路Stata作為一款功能強大、用法簡單且易於上手的統計軟體
  • matlab中的spectrogram函數對信號做短時傅立葉分析
    對於大多數信號而言, 傅立葉分析絕對是非常有用的,因為頻率分析在大多數情況下都非常重要。 那麼為什麼我們還需要研究短時傅立葉變換呢(STFT)?原因是因為傅立葉分析有一個非常嚴重的缺點, 在將信號從時間域變換到頻率域去的時候,把時間信息丟失了。 當我們在用傅立葉變化去分析一個具體信號的時候, 我們不知道哪個頻率是對應在哪個時間點出現的,在哪個時間點消失的。
  • 回歸模型擬合優度檢驗 - CSDN
    也就是說,數據不會與模型所做的假設衝突。對於二元結果,邏輯回歸是最流行的建模方法。在這篇文章中,我們將看一下 Hosmer-Lemeshow邏輯回歸的擬合優度檢驗。 Hosmer-Lemeshow擬合優度檢驗Hosmer-Lemeshow擬合優度檢驗是基於根據預測的概率或風險將樣本分開。
  • 【Matlab】 長時間序列殘差分析
    01殘差分析就是通過殘差所提供的信息,分析出數據的可靠性、周期性或其它幹擾 。
  • 在回歸分析中t檢驗_回歸分析的t檢驗如何做 - CSDN
    使數據從原來停留在說明過去變為驅動現在,我以為預測對企業的作用從兩個方向:A.宏觀是對趨勢的預測,給企業做大勢分析,B.微觀是對個體的精準分析,給企業做個性化精準營銷(3).從結構上,大數據更多的體現在海量非結構化數據本身與處理方法的整合大數據與小數據判斷原則: