Author

Li Zongzhang

Published

June 2, 2026

1 数据和变量

数据来源:mobile.xlsx

样本容量:142

laptop: 笔记本电脑价格(元)

cost: 月生活费(元)

mobile: 手机价格(元)

mobile: 笔记本电脑使用时长(月)

gender: 性别

demand_type: 需求类型(性能-performance/轻量-lite)

brand_prefer: 品牌偏好(高端设计-premium/主流商务-mainstream/专业游戏-gaming/高性价比-value)

2 描述性统计分析

2.1 定量变量

code
library(modelsummary)
datasummary(laptop + cost + mobile + usage_month ~ 
                     N + Mean + SD + Median + Min + Max, 
                   data = df, 
                   fmt = 3, 
                   output = 'flextable') %>%
  theme_apa() %>%              
  autofit() %>%               
  font(fontname = "Times New Roman", part = "all")

N

Mean

SD

Median

Min

Max

laptop

142

6260.627

2362.171

6000.000

1800.000

13000.000

cost

142

2100.077

672.072

2000.000

800.000

5000.000

mobile

142

5329.824

2828.370

5299.500

1200.000

13999.000

usage_month

142

15.697

10.254

16.000

1.000

62.000


2.2 定性变量

code
datasummary(gender + demand_type + brand_prefer ~ 
            N + Percent() + laptop * (Mean + Median + SD + Min + Max), 
            data = df, 
            fmt = 2, 
            output = 'flextable') %>%
  theme_apa() %>%
  autofit() %>%
  font(fontname = "Times New Roman", part = "all")

N

Percent

Mean

Median

SD

Min

Max

gender

female

108

76.06

5865.74

5550.00

2262.62

1800.00

13000.00

male

34

23.94

7514.97

7149.50

2260.61

2599.00

12999.00

demand_type

lite

90

63.38

5733.38

5550.00

2120.69

1800.00

12499.00

performance

52

36.62

7173.17

6894.50

2497.74

2300.00

13000.00

brand_prefer

gaming

21

14.79

8042.24

7800.00

1947.86

5400.00

13000.00

mainstream

81

57.04

5800.21

5600.00

2078.70

1800.00

12999.00

premium

18

12.68

7578.33

6857.50

2639.92

3599.00

12499.00

value

22

15.49

5177.05

5000.00

2244.66

2000.00

10000.00

3 回归分析

3.1 Model 1

code
library(broom)
m1 <- lm(laptop ~ cost + mobile + usage_month, data = df)

models_list <- list("Model 1" = m1)

modelsummary(
  list("Model 1" = m1), 
  fmt = 3, 
  stars = TRUE, 
  gof_omit = 'AIC|BIC|Log.Lik|F|statistic', 
  output = "flextable"
) %>% 
  theme_apa() %>%
  fontsize(size = 18, part = "all") %>%      
  padding(padding = 5, part = "all") %>%
  autofit() %>%
  font(fontname = "Times New Roman", part = "all")

Model 1 Regression Analysis

Model 1

(Intercept)

4689.049***

(654.061)

cost

0.399

(0.289)

mobile

0.291***

(0.069)

usage_month

-52.193**

(17.250)

Num.Obs.

142

R2

0.230

R2 Adj.

0.213

RMSE

2065.51

+ p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001

\[ \operatorname{\widehat{laptop}} = 4689.049 + 0.399(\operatorname{cost}) + 0.291(\operatorname{mobile}) - 52.193(\operatorname{usage\_month}) \]


3.2 Model 2.1

code
library(broom)
m2 <- lm(log(laptop) ~ log(cost) + log(mobile) + usage_month, data = df)

models_list <- list("Model 2 (Y=log(laptop))" = m2)

modelsummary(
  models_list, 
  fmt = 3, 
  stars = TRUE,  
  gof_omit = 'AIC|BIC|Log.Lik|F|statistic', 
  output = "flextable"
) %>% 
  theme_apa() %>% 
  autofit() %>%
  font(fontname = "Times New Roman", part = "all")

Model 2 Regression Analysis

Model 2 (Y=log(laptop))

(Intercept)

5.785***

(0.735)

log(cost)

0.110

(0.103)

log(mobile)

0.258***

(0.056)

usage_month

-0.008**

(0.003)

Num.Obs.

142

R2

0.229

R2 Adj.

0.213

RMSE

0.35

+ p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001

\[ \operatorname{\widehat{log(laptop)}} = 5.785 + 0.11(\operatorname{\log(cost)}) + 0.258(\operatorname{\log(mobile)}) - 0.008(\operatorname{usage\_month}) \]

3.3 Model 2.2

code
library(broom)
m2.2 <- lm(log(laptop) ~ log(cost) + log(mobile) + usage_month + gender + 
     gender:log(mobile), data = df)

models_list <- list("Model 2 (Y=log(laptop))" = m2.2)

modelsummary(
  models_list, 
  fmt = 3, 
  stars = TRUE,  
  gof_omit = 'AIC|BIC|Log.Lik|F|statistic', 
  output = "flextable"
) %>% 
  theme_apa() %>% 
  autofit() %>%
  font(fontname = "Times New Roman", part = "all")

Model 2 Regression Analysis

Model 2 (Y=log(laptop))

(Intercept)

5.027***

(0.740)

log(cost)

0.122

(0.096)

log(mobile)

0.325***

(0.059)

usage_month

-0.006*

(0.003)

gendermale

1.827*

(0.920)

log(mobile) × gendermale

-0.183+

(0.110)

Num.Obs.

142

R2

0.341

R2 Adj.

0.317

RMSE

0.32

+ p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001

\[ \begin{aligned} \operatorname{\widehat{log(laptop)}} &= 5.027 + 0.122(\operatorname{\log(cost)}) + 0.325(\operatorname{\log(mobile)}) - 0.006(\operatorname{usage\_month})\ + \\ &\quad 1.827(\operatorname{gender}_{\operatorname{male}}) - 0.183(\operatorname{\log(mobile)} \times \operatorname{gender}_{\operatorname{male}}) \end{aligned} \]


3.4 Model 3

code
m3 <- lm(laptop ~ cost + mobile + usage_month + gender, data = df)

models_list <- list("Model 3" = m3)

modelsummary(
  models_list, 
  fmt = 3, 
  stars = TRUE,  
  gof_omit = 'AIC|BIC|Log.Lik|F|statistic', 
  output = "flextable"
) %>% 
  theme_apa() %>% 
  autofit() %>%
  font(fontname = "Times New Roman", part = "all")

Regression Analysis

Model 3

(Intercept)

3905.511***

(638.666)

cost

0.424

(0.272)

mobile

0.317***

(0.065)

usage_month

-40.910*

(16.386)

gendermale

1745.878***

(393.317)

Num.Obs.

142

R2

0.327

R2 Adj.

0.307

RMSE

1931.29

+ p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001

\[ \operatorname{\widehat{laptop}} = 3905.511 + 0.424(\operatorname{cost}) + 0.317(\operatorname{mobile}) - 40.91(\operatorname{usage\_month}) + 1745.878(\operatorname{gender}_{\operatorname{male}}) \]


3.5 Model 4

code
m4 <- lm(log(laptop) ~ log(cost) + log(mobile) + 
           usage_month + 
           gender + demand_type + brand_prefer , data = df)

models_list <- list("Model 4" = m4)

modelsummary(
  models_list, 
  fmt = 3, 
  stars = TRUE,  
  gof_omit = 'AIC|BIC|Log.Lik|F|statistic', 
  output = "flextable"
) %>% 
  theme_apa() %>% 
  autofit() %>%
  font(fontname = "Times New Roman", part = "all")

Regression Analysis

Model 4

(Intercept)

6.288***

(0.730)

log(cost)

0.070

(0.096)

log(mobile)

0.241***

(0.052)

usage_month

-0.005*

(0.003)

gendermale

0.231***

(0.068)

demand_typeperformance

0.094

(0.066)

brand_prefermainstream

-0.217*

(0.087)

brand_preferpremium

-0.081

(0.113)

brand_prefervalue

-0.322**

(0.101)

Num.Obs.

142

R2

0.406

R2 Adj.

0.370

RMSE

0.31

+ p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001

\[ \begin{aligned} \operatorname{\widehat{log(laptop)}} &= 6.2883 + 0.07(\operatorname{\log(cost)}) + 0.2408(\operatorname{\log(mobile)}) - 0.0055(\operatorname{usage\_month})\ + \\ &\quad 0.2306(\operatorname{gender}_{\operatorname{male}}) + 0.094(\operatorname{demand\_type}_{\operatorname{performance}}) - 0.2174(\operatorname{brand\_prefer}_{\operatorname{mainstream}}) - 0.0812(\operatorname{brand\_prefer}_{\operatorname{premium}})\ - \\ &\quad 0.3221(\operatorname{brand\_prefer}_{\operatorname{value}}) \end{aligned} \]