1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo phân tích lợi nhuận ròng giữa các công ty trong ngành sản xuất nói chung niêm yết trên thị trường chứng khoán việt nam

34 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 34
Dung lượng 4,48 MB

Nội dung

Giới thiệu Trong báo cáo này, nhóm tôi trình bày những phát hiện từ việc khám phá bộ dữ liệu lợi nhuận ròng của các công ty thuộc các nhóm ngành sản xuất, đo lường 3 biến số ảnh hưởng đế

Trang 1

TRƯỜNG ĐẠI HỌC NGAN HANG THANH PHO HO CHi MINH

KHOA KE TOAN — KIEM TOAN

MON: PHAN TICH DU LIEU KE TOAN VOI PYTHON NANG CAO

BAO CAO PHAN TICH LOI NHUAN RONG GIUA CAC CÔNG TY TRONG NGANH SAN XUAT NOI CHUNG NIEM YET TREN THI

TRUONG CHUNG KHOAN VIET NAM Giáo viên: Đặng Đỉnh Tân

Thành viên nhóm:

Lớp: DAT7I1 231 9 L28

Thành phé H6 Chi Minh, Thang 01 2024

Trang 2

BANG PHAN CONG

Mô hình phân loại với hồi quy

logIstic

Phùng Huy Chương | Mô hình phân cụm với K-Means 100%

Trang 3

Mô hình hồi quy tuyến tính: . - 5-5 5252 S3 *x ve eErerkrkerrrrrrrrersrerrrere 4

2.1 Thực hiện phân tích dữ liệu khám phá BS + xxx EEEssseeseeeeses 4 2.2 Xử lý các giá trị ngoại lai các biến độc lập (Outlier) -s-s=es=s=z<zs+s 5

2.3 Trực quan đường hồi quy tuyến tính +2 + +s+s=+s+s+z+zEzkzezsezeetzsexezezsrxrs §

2.4 Trực quan hoá mối tương quan giữa các biẾn -+++s++s+s+sc+eeexeeesreescee 9

2.5 Thực hiện hồi quy tuyến tính với Seikit-learn 5-5-5 <5 +s5s=+<+s+e<<c=s2 10 2.6 Kt 1am o.eeeseceeseseceesesesececsesesececseseseeecseseeececaesesesscaeaesesecatansasecataneeseseeaneeseeeeaneesess 13

M6 hinh phn loai voi hoi quy logistic cccecsscsesesescseescessseseeseescatssenseceeneaseees 13 3.1 Thực hiện phân tich dif liu kham pha eee eeeeeeeee sees eeseeeeeeeeeeeseeeeceseeeeees 13 3.2 Phân tích khám phá số lượng các ngành trong danh mục “Ngành chung” 14

3.3 Phân tích khám phá phân phối của các thuộc tính: .- ¿ 55 «s++s+<£+s£z+s 15

3.4 Thực hiện phân tích mô hình hồi quy logistic voi Seikit-learn - 16 3.5 Thực hiện phân tích mô hình dự đoán - - - - SS + ke vrrrre 20

4.1 Thực hiện phân tích dữ liệu khám phá (EIDA) - - SĂSĂ se 21 4.2 Phân tích khám phá số lượng công ty theo từng nhóm ngành sản xuất chung 22 4.3 Phân tích khám phá phân phối của các biến kiểu số “Tông Doanh Thu”, “Tông

4.4 Xay dung mé hinh phan cum voi K-Means cececssscssccccceenneeeceeeeeeeeeeeeeeeeeeeeeees 24

9150800070 1 444 ,ÔỎ 32

Trang 4

LỜI MỞ ĐẦU

1 Giới thiệu

Trong báo cáo này, nhóm tôi trình bày những phát hiện từ việc khám phá bộ dữ liệu lợi nhuận ròng của các công ty thuộc các nhóm ngành sản xuất, đo lường 3 biến số ảnh hưởng đến sự tăng giảm của lợi nhuận ròng cho hơn 290 công ty Doanh nghiệp có hiệu quả kinh doanh cao khi chỉ sô lợi nhuận ròng cao Nắm được lợi nhuận ròng giúp doanh nghiệp biệt được tỷ trọng lợi nhuận trong tông số doanh thu, từ đó đưa ra đánh giá hoạt động kinh doanh là lãi hay lỗ Lợi nhuận ròng là tỷ lệ phần trăm lợi nhuận ròng trên doanh thu, thê hiện khả năng sinh lời từ hoạt động kinh doanh của doanh nghiệp

2 Mục tiêu

Xác định các yếu tô dự đoán trong tập đữ liệu về Lợi nhuận ròng

Xây dựng các mô hình hồi quy, phân loại với hồi quy logistic, phân cụm với K-mean

có thể dự đoán lợi nhuận ròng của các công ty trong ngành sản xuất Từ đó xác định nhóm ngành sản xuất nào có lợi nhuận cao hơn, sau đó đánh giá xu hướng tiêu dùng của người tiêu dùng cho ngành sản xuất nào là nhiều nhất

Giải thích kết quả của mô hình và sử dụng mô hình đã được huấn luyện để suy ra lợi nhuận ròng/doanh thu của các công ty mới

Trang 5

1, Khám phá dữ liệu

1,1, Khai báo thư viện

In [1]: M # Khai bảo thư viện

import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression, LogisticRegression from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score from sklearn.metrics import confusion_matrix, accuracy score, precision_score, recall score, f1 score from sklearn.metrics import classification_report

from sklearn.preprocessing import PolynomialFeatures from sklearn.cluster import KMeans

from sklearn.metrics import silhouette_score

1.2 Khai pha dữ liệu

In [2]: Dl df = pd.read_csv('D:/PTDLKT/net_profit.csv')

In [3]: M df.head()

§TT Tông Doanh Thu Tông Chi Phí Thuẻ TNDN Lợi Nhuận Ròng Ngành chung Ngành sản xuất cụ thê

0 1 919.55 73.58 18.20 827.77 _ Ngành sản xuất khác Thiét bi, may méc

1 2 871 46 66.07 22.90 782 49 _ Ngành sản xuất khác Thiết bị, máy móc

2 3 894 60 77.79 14.70 802.11 Ngành sân xuất khác Thiết bị, máy móc

3 4 1044.38 81.87 14.21 948.30 Ngành sản xuất khác Thiết bị, máy móc

4 5 1251.89 106.00 15.67 1130.22 Ngành sản xuất khác Thiết bị, máy móc

In [4]: DW df.isnull().sum()

0ut[4]: STT

Tổng Doanh Thu

Tổng Chi Phi Thuế TNDN Loi Nhuan Rong Nganh chung

Bộ dữ liệu này chứa hơn 290 công ty , mỗi công ty có 6 (cột “STT” không có ảnh hưởng

gì đên lợi nhuận ròng) thuộc tính liên quan đên lợi nhuận ròng Bộ dữ liệu này không

có dữ liệu bị thiếu hay bị trùng lặp Vì thế dữ liệu đã sẵn sảng để thực hiện các mô hình

đã đặt ra trước đó

2 Mô hình hồi quy tuyến tính

2.1 Thực hiện phân tích dữ liệu khám phá

Trang 6

Lợi Nhuận Rong Nganh chung

dtypes: float64(4), int64(1), object(2)

floate4 float64 object

Tổng Doanh Thu Tổng Chi Phí Thuế NDN Lợi Nhuận Rỏng

103

Dữ liệu được giữ lại các biến “Tông Doanh Thu”, “Tông Chi Phí”, “Thuế TNDN”, “Lợi

Nhuận Ròng” với mô hỉnh hỗi quy tuyến tính theo dạng như sau:

708400 11940000

751.820000 1461.620000

446 434915 3867.750000

Trang 7

sns.histplot(data=df, x='Tổng Doanh Thu', kde=True, ax=ax[9]) sns.boxplot(data=df, x='Tổng Doanh Thu', ax=ax[1]) plt show()

II

„e ,

J 7 : - N : z = 7 =

0 cao sức XẾOC 1A ĐA MMC lẠOO 2603 “ ao = wo we wo uo We 2008

Neg Coaeh TH Tow Onan Te

In [51]: fig, ax = plt.subplots(1, 2, figsize = (29, 5))

sns.histplot(data=df, x="Téng Chi Phi’, kde = True, ax=ax[@]) sns.boxplot(data=df, x="Téng Chi Phi’, ax=ax[1])

và sẽ không ảnh hưởng đên kết quả mô hình hôi quy

In [52]: fig, ax = plt.subplots(1, 2, figsize = (20, 5))

sns.histplot(data=df, x="Thué TNDN’, kde = True, ax=ax[@]) sns.boxplot(data=df, x='Thuế TNDN', ax=ax[1])

plt.show()

*

“«

» 1< i | | we đP SP 66 68 6

” : = 7 x * AaS _= = * * : x ie x : = a x

Thuế TRƠN ed TRON,

Kết quả chạy đữ liệu phân tich trén biéu dé Hisplot va Boxplot cho thay bién déc lap

“Thuế TNDN” có các giá trị ngoại lai cao hơn (upper) Chính vì lý do đó phải tiễn hành loại bớt các outliers này vì sẽ có khả năng ảnh hưởng đến kết quả mô hình hồi quy không được chính xác Bên cạnh đó, loại bỏ những điểm đữ liệu outliers là một phần

6

Trang 8

quan trọng trong quá trình làm sạch dữ liệu, để bảo đảm những phân tích đầu ra chính xác, từ đó đưa ra những đê xuât và quyết định kinh doanh có thê áp dụng cho các công

ty thuộc ngành sản xuất

Ta thấy trên hình có khá nhiều giá trị lẻ tẻ hướng về bên phải Do vậy ta cần đưa chúng

về giá trị cực tiêu hoặc cực đại của Boxplot

Trong thông kê, một ngoại lệ (outlier) là một điểm đữ liệu khác biệt đáng kê so với các quan sát khác Một ngoại lệ có thê là do sự thay đôi trong phép đo hoặc là lỗi và thông thường được loại trừ khỏi tập đữ liệu bởi nó có thê gây ra vấn đề nghiêm trọng trong phân tích thông kê

Để tìm ngoại lệ, ta dùng thêm khái niệm IQR

IQR (Interquartile Range) là một khái niệm trong thống kê mô tả, dùng đo lường độ phân tán của dữ liệu và được tính toán băng công thức:

IQR = Q3— Q1 Điểm ngoại lệ sẽ là những điểm nhỏ hơn QI—1.5xIQR và Q3+1.5xIQR:

© (QI-1.5xIQR): dai diện cho giá trị nhỏ nhất của tập dữ liệu

e (Q3+1.5xIQR): dai dién cho giá trị lớn nhật của tập dữ liệu

Sau khi cắt dữ liệu theo cực đại và cực tiểu của boxplot ta thấy răng dữ liệu đã đỡ lệch

đi Và ta không còn thấy các điểm ngoại lai năm ngoài cực đại và cực tiêu

Trang 9

Dữ liệu được cắt bỏ các giá trị ngoại lai và dùng hàm s#zpe để kiểm tra xem liệu dữ liệu được cắt bỏ outliers hay chưa (từ 296 dòng 269 dòng)

2.3 Trực quan đường hồi quy tuyến tính

Lần lượt tạo đường hỗi quy (Regression Line) giữa biến phụ thuộc với các biến độc lập

đề biêu diễn môi quan hệ tuyên tính giữa chúng

In [83]:

In [58]:

fig, ax = plt subplots(1, 2, figsize=(19, 3)) sns.scatterplot(data-=df, x='Tổng Doanh Thu', y='Lợi Nhuận Ròng', ax=ax[9]) sns.regplot(data=df, x='Tổng Doanh Thu', y='Lợi Nhuận Ròng', ax=ax[1])

Trang 10

sns.scatterplot(data=df, x='Thuế TNDN', y='Lợi Nhuận Ròng', ax=ax[@]) sns.regplot(data=df, x='Thuế TNDN', y='Lợi Nhuận Ròng', ax=ax[1])

Qua ba cặp bảng biểu đồ cho thấy trong ba biến độc lập “Tổng Doanh Thu”, “Tổng Chi

Phí”, “Thuế TNDN'” thì “Tông Doanh Thu” là biến có sự đồng nhất và khớp nhất đối

với “Lợi Nhuận Ròng” Trong khi đó biến “Tổng Chi Phí” và “Thuế TNDN” lại đồng

nhất thấp với đường hồi quy

2.4 Trực quan hoá mối tương quan giữa các biến

Mỗi quan hệ tương quan giữa các biên:

Biêu đồ phân tán Scatter mô tả môi liên quan giữa các biên:

Trang 11

Tống Doanh Thu

10 20 Thuế TNDN 500

2.5 Thực hiện hồi quy tuyến tính với Scikit-learn

2.5.1 Phan tách dữ liệu

Trang 12

((81, 3), (81,))

x_train.shape, y_train.shape ((188, 3), (188,))

Phân tách dữ liệu biến độc lập và biến phụ thuộc thành bộ tập đữ liệu thành đữ liệu huấn

luyện và dữ liệu kiểm tra với Scikit-learn

2.5.2 Chuẩn hoá bộ dữ liệu

X train_normalized = pd.Datarrame({'Tổng Doanh Thu': x_train normalized[:

"Tổng Chi Phi': x train normalized[:,1],

"Thuế TNDNW": x _train_normalized[:,2]})

x _test_normalized = scaler.fit_transform(x test)

¡ test_normalized = scaler.fit_transform(pd.DataFrame({ 'Lợi Nhuận Rông': y_test}))

x test _normalized = pd.DataFrame({ 'Tống Doanh Thu": x test _normalized[ : ,Ø],

"Tong Chi Phí": x_test_normalized[:,1],

"Thuế THDN": x test_normalized[ : ;2]})

x train_normalized.shape, y_train_normalized.shape ((488, 3), (188, 1))

x_test_normalized.shape, y_test_normalized shape

((81, 3), (81, 1))

Chuân hóa bộ đữ liệu huấn luyện và kiểm tra trước khi thực hiện hồi quy

Trong đó bộ dữ liệu huấn luyện gồm có 188 dòng và bộ đữ liệu kiểm tra có 81 dòng

11

Trang 13

out[72]:

out [74]:

model_normalized.fit(x_train_normalized, y_train_normalized)

* LinearRegression LinearRegression() ]: model_normalized.score(x_train_normalized, y_train_normalized)

: 1.0

74}: model_normalized.score(x_test_normalized, y_test_normalized)

@.9998650244460858

Xác định mô hình hỏi quy tuyến tính với bộ dữ liệu huấn luyện được chuân hóa và ước

tính các tham số cho mô hình Hàm zmođel_normalized.seore cho thây điềm số về độ

chính xác của mô hỉnh đối với đữ liệu huấn luyện là 1 và đữ liệu kiếm tra là 0,99 Qua

đó cho thay bộ dữ liệu đã được chuẩn hóa có độ chính xác và tin cậy cao

2.5.3 Đánh giá mô hình hồi quy

1n [75]

In [76]:

in [77]:

0ut[77]

: y pred normalized = model normalized.predict(x test _normalized)

MSE = mean_squared_error(y_test_normalized, y pred normalized)

“RMSE': [RMSE],

R2':(R2],

"R2_adj':[R2_adj]})

model _normalized_metrics MSE RMSE MAE R2 R2 adj

0 0000135 0011618 000954 0999865 099986

Kết quả đánh giá của mô hình như sau:

MSE (Sai số bình phương trung bình): Là chỉ số được sử dụng nhiều nhất, là tổng các bình phương chênh lệch giữa giá trị thực thé va gid tri dự đoán chia cho

số điểm dữ liệu

RMSE (Độ lệch sai số bình phương trung bình): Căn bậc hai của MSE MAE (Sai số tuyệt đối trung bình): Là tông các giá trị tuyệt đối chênh lệch giữa giá trị thực tế và giá trị dự đoán chia cho số điểm dữ liệu

=> Kết quả cho thấy các chỉ số này rất nhỏ gần băng 0 => chênh lệch giữa các giá trị thực tế và dự đoán không quá lớn = Không tôn tại quá nhiễu sai sót

R2: Hệ số xác định hay còn được xem là mức độ phù hợp của hàm hồi quy, cho thay mirc dé thay déi của mô hình đối với biến phụ thuộc Nếu R2 nằm trong khoảng từ 0 đến I hoặc giá trị lớn hơn thì mô hình có sự phù hợp tốt hơn giữa giá trị dự đoán so với giá trị thực tế

=> Kết quả cho thấy chỉ số R2 cao đến 0,99 ~ I => Mô hình có sự phù hợp cao

Trang 14

Kết luận: Qua bảng kết quả cho thấy mô hình hồi quy có độ tin cậy, chính xác và phù hợp cao là mô hinh tôt (khớp)

2.5.4 Sử dụng mô hình đề dự đoán Lợi Nhuận Ròng cho một công ty với các số liệu Tông Doanh Thu, Tông Chi Phí và Thuế TNDN

Lợi Nhuận Rông = 1.03"Tổng Doanh Thu + -8.1*Tổng Chỉ Phĩ + -0.02"Thuế TNDN + [-9.]

Như vậy ta có thê tính toán lợi nhuận ròng của một công ty bắt kỳ trong ngành sản xuất nói chung với hàm tính với model normalized.coef_ là hệ số độ đốc của đường hồi quy

và model_ normalized.intercept_ hệ sô chặn của mô hình hoi quy:

Thué TNDN trong giai đoạn từ 2015 đến 2020 Kết quả cho thấy sự ảnh hưởng đáng kế

của các biến độc lập này đối với lợi nhuận ròng Tổng Doanh Thu đã đóng vai trò quan trọng trong việc hỉnh thành Lợi Nhuận Ròng, với mức độ ảnh hưởng tương ứng được xác định thông qua các hệ số hồi quy Ngoài ra, Tông Chi Phí và Thuế TNDN cũng đóng góp vào sự biến động của Lợi Nhuận Ròng

Từ những kết quả này, doanh nghiệp có thể đưa ra chiến lược quản lý hiệu quả, tập trung vào việc tối ưu hóa doanh thu, giảm chỉ phí, và đồng thời đảm bảo mức thuế thu nhập doanh nghiệp hợp lý Sự hiểu biết sâu sắc về mô hình hồi quy tuyến tinh nay mang lại cơ hội để dự đoán và điều chỉnh mục tiêu lợi nhuận, từ đó nâng cao khả năng quản

lý và định hình chiến lược phát triển của doanh nghiệp trong tương lai

3 Mô hình phân loại với hồi quy logistic

3.1 Thực hiện phân tích dữ liệu khám phá

Trang 15

Data columns (total 7 columns):

# Column Non-Null Count Dtype

1 Tổng Doanh Thu 296 non-null float64

2 Tổng Chi Phí 296 non-null float64

3 Thuế TNDN 296 non-null float64

4 Lợi Nhuận Ròng 296 non-null float64

5 Ngành chung 296 non-null object

6 Ngành sản xuất cụ thể 296 non-null object dtypes: float64(4), int64(1), object(2)

memory usage: 16.3+ KB Entrée [107]: df.isnull().sum()

Out [107]: STT

Téng Doanh Thu

Téng Chi Phi Thuế TNDN Lợi Nhuận Ròng Ngành chung

Entrée [109]: data = df.drop(columns='STT’, inplace=True)

Dữ liệu không tồn tại giá trị bị thiểu hay trùng lặp Các biến được giữ lại bao gồm: Tổng Doanh Thu, Tổng Chi Phí, Thuế TNDN, Lợi Nhuận Ròng, Ngành chung, Ngành sản xuất cụ thê

3.2 Phân tích khám phá số lượng các ngành trong danh mục “Ngành chung”

Trang 16

Out[13]: Ngành sản xuất khác 171

Ngành sản xuất hàng gia dụng và thực phẩm đồ uống 125 Name: Ngành chung, dtype: int64

Entrée [110]: df['Ngành chung' ].value_counts().plot(kind='pie', autopct='%.1f%%' )

Out[11@]: «<Axes: ylabel='count'>

Ngành sản xuất khác

Ngành sản xuất hàng gia dụng và thực phẩm đồ uống

Chiếm tỷ trọng cao nhất là “Ngành sản xuất khác” với 57,8% Trong đó số lượng công

ty thuộc “Ngành sản xuât khác” là 171 Theo sau đó là “Ngành sản xuat hang gia dụng

và thực phâm đỗ uông” với 125 công ty, chiêm 42,2% trên tông sô ngành chung 3.3 Phân tích khám phá phân phối của các thuộc tính

fig, ax = plt.subplots(figsize=(19,4))

sns.histplot(df[ 'Tổng Doanh Thu'], bins=38, kde=True)

ax,set_title("Histplot cho Tổng Doanh Thu")

pIt.shox()

D:\anaconda3\Lib\site-packages\seaborn\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version Conve

rt inf values to NaN before operating instead

with pd.option_context("mode.use_inf_as_na', True):

Histplot cho Téng Doanh Thu

1000 1200 1400 Tổng Doanh Thu

Trang 17

sns.boxplot(x="Nganh chung", y='Téng Doanh Thu", data=df)

3.4 Thực hiện phân tích mô hình hồi quy logistic với Scikit-learn

Hồi quy Logistic là một phương pháp thông kê được sử dụng để xây đựng các mô hình máy học trong đó biến phụ thuộc có dạng lưỡng phân (nhị phân), các biến độc lập có thê là biến định danh, thứ bậc hoặc khoảng Trong kinh doanh, việc phân tích hồi quy logistic có nhiều ứng dụng có thể liệt kê đến như phân tích rủi ro tín dụng, kiểm soát chất lượng, dự đoán mức độ rủi ro của người mua bảo hiểm nhân thọ trong một khoảng thời gian cu thé

3.4.1 Chuẩn hoá dữ liệu

# Chuẩn hóa đữ Liệu

Ngày đăng: 06/12/2024, 14:40

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w