222201390 Dongxinyi math_data quiz

Dong Xinyi

2022-11-13

作业要求:

某研究测试了5-6岁儿童的智力(矩阵推理)、算术能力、数学问题解决能力、数数能力(正确率)和数学焦虑情况。
1.请生成一个数学焦虑变量,计算方法为八道题目的平均值。
2.请对变量进行描述性统计。
3.请分析智力、计算能力、数学问题解决能力、数数能力(正确率)、数学焦虑是否有性别差异。
4.请报告性别、年龄、智力(矩阵推理)、算术能力、数学问题解决能力、数数能力(正确率)和数学焦虑之间的相关矩阵。
5.在控制了性别、年龄和智力的情况下,数数能力、数学焦虑是否能预测算术能力和数学问题解决能力?

问卷编码:

  • 编号: number
  • 年龄: age
  • 性别: gender(0=女,1=男)
  • 智力: IG=intelligence
  • 计算能力: CA=Compute Ability
  • 数学问题解决: PS=Mathematical Problem Solving
  • 数数: Count
  • 数学焦虑第1题: SXJL 1
  • 数学焦虑第2题: SXJL 2
  • 数学焦虑第3题: SXJL 3
  • 数学焦虑第4题: SXJL 4
  • 数学焦虑第5题: SXJL 5
  • 数学焦虑第6题: SXJL 6
  • 数学焦虑第7题: SXJL 7
  • 数学焦虑第8题: SXJL 8
    COMPUTE SXJL = MEAN(SXJL 1, SXJL 2, SXJL 3, SXJL 4, SXJL 5, SXJL 6, SXJL 7, SXJL 8 )

0.数据预处理。

#导入数据
library(readxl)
math_data <- read_excel("D:/R/2022-11-11/math data.xlsx")
View(math_data)
#更改变量名称
names(math_data)[1] <- "number"
names(math_data)[2] <- "age"
names(math_data)[3] <- "gender"
names(math_data)[4] <- "IQ"
names(math_data)[5] <- "CA"
names(math_data)[6] <- "PS"
names(math_data)[7] <- "Count"
names(math_data)[8:15]<-paste('SXJL',1:8)
#检查数据缺失值
summary(math_data)
##      number            age            gender             IQ        
##  Min.   :201001   Min.   :5.300   Min.   :0.0000   Min.   : 1.000  
##  1st Qu.:201020   1st Qu.:5.910   1st Qu.:0.0000   1st Qu.: 5.000  
##  Median :201038   Median :6.150   Median :0.0000   Median : 7.000  
##  Mean   :201038   Mean   :6.150   Mean   :0.4533   Mean   : 7.554  
##  3rd Qu.:201057   3rd Qu.:6.425   3rd Qu.:1.0000   3rd Qu.: 9.750  
##  Max.   :201075   Max.   :6.990   Max.   :1.0000   Max.   :16.000  
##                                                    NA's   :1       
##        CA              PS            Count            SXJL 1     
##  Min.   : 3.00   Min.   : 8.00   Min.   :0.2000   Min.   :1.000  
##  1st Qu.: 7.00   1st Qu.:14.00   1st Qu.:0.6000   1st Qu.:3.000  
##  Median : 8.00   Median :18.00   Median :0.8000   Median :4.000  
##  Mean   : 8.76   Mean   :17.88   Mean   :0.6933   Mean   :3.613  
##  3rd Qu.:10.50   3rd Qu.:21.00   3rd Qu.:1.0000   3rd Qu.:5.000  
##  Max.   :24.00   Max.   :31.00   Max.   :1.0000   Max.   :5.000  
##                                                                  
##      SXJL 2          SXJL 3          SXJL 4          SXJL 5         SXJL 6     
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.00   Min.   :1.000  
##  1st Qu.:3.000   1st Qu.:3.000   1st Qu.:3.000   1st Qu.:2.00   1st Qu.:4.000  
##  Median :4.000   Median :5.000   Median :5.000   Median :3.00   Median :5.000  
##  Mean   :3.608   Mean   :3.947   Mean   :3.947   Mean   :3.04   Mean   :4.307  
##  3rd Qu.:5.000   3rd Qu.:5.000   3rd Qu.:5.000   3rd Qu.:4.00   3rd Qu.:5.000  
##  Max.   :5.000   Max.   :5.000   Max.   :5.000   Max.   :5.00   Max.   :5.000  
##  NA's   :1                                                                     
##      SXJL 7         SXJL 8     
##  Min.   :1.00   Min.   :1.000  
##  1st Qu.:2.00   1st Qu.:1.000  
##  Median :3.00   Median :3.000  
##  Mean   :3.24   Mean   :3.173  
##  3rd Qu.:4.00   3rd Qu.:5.000  
##  Max.   :5.00   Max.   :5.000  
## 

数据筛选:

  1. 编号201002:缺少智力(IG)得分,NA
  2. 编号201067:SXJL2得分为73分,超过5点计分,属于错误数据
    判断201067-SXJL2属于完全随机缺失(MCAR),可以删除错误73或者进行数据填补。
    该样本量>30,且缺失数据百分比<10%,所以可以选择均值插补。
    判断201067-SXJL2是数值型变量,所以可以使用平均值填补缺失变量。
    最后选择了直接删掉73。

1.请生成一个数学焦虑变量,计算方法为八道题目的平均值。

#COMPUTE SXJL = MEAN(SXJL 1,SXJL 2, SXJL 3, SXJL 4, SXJL 5, SXJL 6, SXJL 7, SXJL 8)
#查看math_data的变量数据名称,发现SXJL1-8位于row8-15
colnames(math_data)
##  [1] "number" "age"    "gender" "IQ"     "CA"     "PS"     "Count"  "SXJL 1"
##  [9] "SXJL 2" "SXJL 3" "SXJL 4" "SXJL 5" "SXJL 6" "SXJL 7" "SXJL 8"
#计算row8-15的平均值,na.rm = TRUE从数据中删除缺失值
math_data$SXJL<-rowMeans(math_data[8:15],na.rm = TRUE)
#检查生成的新变量数学焦虑(SXJL)
math_data[c(1,8:16)]
## # A tibble: 75 × 10
##    number `SXJL 1` SXJL …¹ SXJL …² SXJL …³ SXJL …⁴ SXJL …⁵ SXJL …⁶ SXJL …⁷  SXJL
##     <dbl>    <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl> <dbl>
##  1 201049        4       5       2       5       5       5       3       5  4.25
##  2 201005        3       5       5       3       1       5       3       2  3.38
##  3 201002        3       4       3       5       3       3       3       5  3.62
##  4 201025        5       5       5       5       4       5       5       5  4.88
##  5 201028        4       3       3       5       5       4       3       3  3.75
##  6 201022        5       4       5       1       2       5       1       1  3   
##  7 201003        1       3       1       5       3       5       2       5  3.12
##  8 201010        3       3       3       4       3       4       3       3  3.25
##  9 201008        5       5       4       4       5       5       4       4  4.5 
## 10 201018        5       1       5       5       1       1       1       1  2.5 
## # … with 65 more rows, and abbreviated variable names ¹​`SXJL 2`, ²​`SXJL 3`,
## #   ³​`SXJL 4`, ⁴​`SXJL 5`, ⁵​`SXJL 6`, ⁶​`SXJL 7`, ⁷​`SXJL 8`

2.请对变量进行描述性统计。

#导入describe所在package"psych"
library(psych)
#描述性统计
describe(math_data[c('age','gender','IQ','CA','PS','Count','SXJL')])
##        vars  n  mean   sd median trimmed  mad  min   max range  skew kurtosis
## age       1 75  6.15 0.37   6.15    6.15 0.40 5.30  6.99  1.69 -0.08    -0.88
## gender    2 75  0.45 0.50   0.00    0.44 0.00 0.00  1.00  1.00  0.18    -1.99
## IQ        3 74  7.55 3.52   7.00    7.35 2.97 1.00 16.00 15.00  0.48    -0.40
## CA        4 75  8.76 3.02   8.00    8.59 2.97 3.00 24.00 21.00  1.99     7.99
## PS        5 75 17.88 4.84  18.00   17.75 4.45 8.00 31.00 23.00  0.30    -0.09
## Count     6 75  0.69 0.27   0.80    0.71 0.30 0.20  1.00  0.80 -0.54    -0.81
## SXJL      7 75  3.61 0.72   3.62    3.61 0.74 1.88  5.00  3.12  0.04    -0.74
##          se
## age    0.04
## gender 0.06
## IQ     0.41
## CA     0.35
## PS     0.56
## Count  0.03
## SXJL   0.08
#创建问题2所需数据集
math_dataQ2<-math_data[c(2:7,16)]
#生成表1 描述性统计
tab_01 = data.frame(
  Mean  = c(colMeans(math_dataQ2,na.rm = TRUE)),
  SD = c(sapply(math_dataQ2, sd,na.rm = TRUE)),
  Median = c(sapply(math_dataQ2, median,na.rm = TRUE)),
  Min = c(sapply(math_dataQ2, min,na.rm = TRUE)),
  Max = c(sapply(math_dataQ2, max,na.rm = TRUE))
)
Descriptive Statistics(N=75)
Mean SD Median Minimum Maximum
age 6.15 0.37 6.15 5.30 6.99
gender 0.45 0.50 0.00 0.00 1.00
IQ 7.55 3.52 7.00 1.00 16.00
CA 8.76 3.02 8.00 3.00 24.00
PS 17.88 4.84 18.00 8.00 31.00
Count 0.69 0.27 0.80 0.20 1.00
SXJL 3.61 0.72 3.62 1.88 5.00

Note: gender(0=girl,1=boy), IG=intelligence, CA=Compute Ability, PS=Mathematical Problem Solving

3.请分析智力、计算能力、数学问题解决能力、数数能力(正确率)、数学焦虑是否有性别差异。

#正态检验
library(rstatix)
#Shapiro-Wilk统计量的值(W):3<N<5000
math_data %>% shapiro_test(IQ, CA, PS, Count, SXJL)
## # A tibble: 5 × 3
##   variable statistic            p
##   <chr>        <dbl>        <dbl>
## 1 CA           0.828 0.0000000649
## 2 Count        0.870 0.00000151  
## 3 IQ           0.965 0.0367      
## 4 PS           0.980 0.273       
## 5 SXJL         0.978 0.208

正态检验:
数学问题解决能力(PS)、数学焦虑(SXJ)L的P>0.05,符合正态分布,可以使用独立样本t检验;
计算能力(CA)、数数(Count)、智力(IQ)的P<0.05,说明数据不符合正态性,需要进一步使用QQ图确认正态性。

#QQ图检查正态分布
library(ggpubr)
ggqqplot(math_data$PS)

ggqqplot(math_data$SXJL)

ggqqplot(math_data$CA)

ggqqplot(math_data$Count)

ggqqplot(math_data$IQ)

正态检验:
计算能力(CA)、数数(Count)、智力(IQ)的QQ图都是近似正态分布的,所以可以使用独立样本t检验。

#创建问题3所需数据集
math_dataQ3<-math_data[c(3:7,16)]
#将数据转化为整洁数据
library(tidyverse)
math_dataQ3t<-math_dataQ3 %>%
 as_tibble() 
view(math_dataQ3t)
math_dataQ3t
## # A tibble: 75 × 6
##    gender    IQ    CA    PS Count  SXJL
##     <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
##  1      0     8    11    13   0.8  4.25
##  2      0     2     8    14   0.6  3.38
##  3      1    NA     6    19   0.6  3.62
##  4      0     4     8     9   0.8  4.88
##  5      1    11     9    17   0.8  3.75
##  6      0     3     5    10   0.2  3   
##  7      1     7     8    15   0.4  3.12
##  8      1     6     5    17   0.2  3.25
##  9      0    11     7    19   0.2  4.5 
## 10      0     5     4    12   0.2  2.5 
## # … with 65 more rows
#批量独立样本t检验
math_dataQ3tlong<-math_dataQ3 %>%
 pivot_longer(-gender,names_to="variables",values_to="value")
View(math_dataQ3tlong)
stat.test<-math_dataQ3tlong %>%
 group_by(variables) %>%
 t_test(value~gender) %>%
 adjust_pvalue(method="BH") %>%
 add_significance()
stat.test
## # A tibble: 5 × 11
##   variables .y.   group1 group2    n1    n2 statistic    df      p p.adj p.adj…¹
##   <chr>     <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl>  <dbl> <dbl> <chr>  
## 1 CA        value 0      1         41    34    -0.237  63.9 0.814  0.814 ns     
## 2 Count     value 0      1         41    34    -1.47   72.5 0.147  0.29  ns     
## 3 IQ        value 0      1         41    33    -1.19   69.5 0.24   0.3   ns     
## 4 PS        value 0      1         41    34    -1.37   72.8 0.174  0.29  ns     
## 5 SXJL      value 0      1         41    34     1.68   72.9 0.0972 0.29  ns     
## # … with abbreviated variable name ¹​p.adj.signif

所有变量在性别上均不存在显著性差异(P>0.05)。

4.请报告性别、年龄、智力(矩阵推理)、算术能力、数学问题解决能力、数数能力(正确率)和数学焦虑之间的相关矩阵。

#查看math_data的变量数据名称
colnames(math_data)
##  [1] "number" "age"    "gender" "IQ"     "CA"     "PS"     "Count"  "SXJL 1"
##  [9] "SXJL 2" "SXJL 3" "SXJL 4" "SXJL 5" "SXJL 6" "SXJL 7" "SXJL 8" "SXJL"
#创建问题4所需数据集
math_dataQ4<-math_data[c(2:7,16)]
#皮尔逊积差相关
library(psych)
corr.test(math_dataQ4)
## Call:corr.test(x = math_dataQ4)
## Correlation matrix 
##         age gender    IQ   CA    PS Count  SXJL
## age    1.00   0.17  0.27 0.22  0.36  0.36  0.06
## gender 0.17   1.00  0.14 0.03  0.16  0.17 -0.19
## IQ     0.27   0.14  1.00 0.33  0.61  0.30 -0.06
## CA     0.22   0.03  0.33 1.00  0.33  0.42  0.19
## PS     0.36   0.16  0.61 0.33  1.00  0.50 -0.07
## Count  0.36   0.17  0.30 0.42  0.50  1.00  0.20
## SXJL   0.06  -0.19 -0.06 0.19 -0.07  0.20  1.00
## Sample Size 
##        age gender IQ CA PS Count SXJL
## age     75     75 74 75 75    75   75
## gender  75     75 74 75 75    75   75
## IQ      74     74 74 74 74    74   74
## CA      75     75 74 75 75    75   75
## PS      75     75 74 75 75    75   75
## Count   75     75 74 75 75    75   75
## SXJL    75     75 74 75 75    75   75
## Probability values (Entries above the diagonal are adjusted for multiple tests.) 
##         age gender   IQ   CA   PS Count SXJL
## age    0.00   1.00 0.24 0.64 0.03  0.03 1.00
## gender 0.16   0.00 1.00 1.00 1.00  1.00 0.98
## IQ     0.02   0.24 0.00 0.07 0.00  0.15 1.00
## CA     0.05   0.81 0.00 0.00 0.06  0.00 0.98
## PS     0.00   0.18 0.00 0.00 0.00  0.00 1.00
## Count  0.00   0.16 0.01 0.00 0.00  0.00 0.88
## SXJL   0.60   0.10 0.63 0.10 0.57  0.08 0.00
## 
##  To see confidence intervals of the correlations, print with the short=FALSE option
#利用psych图示散点图和相关系数以及分布直方图
library(psych)
pairs.panels(math_dataQ4)

# 使用corrgram标识相关强弱
library(corrgram)
corrgram(math_dataQ4,upper.panel=panel.cor)

library(apaTables)
apa.cor.table(math_dataQ4, filename="Table2_APA.doc", table.number=2)
## 
## 
## Table 2 
## 
## Means, standard deviations, and correlations with confidence intervals
##  
## 
##   Variable  M     SD   1           2           3           4          
##   1. age    6.15  0.37                                                
##                                                                       
##   2. gender 0.45  0.50 .17                                            
##                        [-.06, .38]                                    
##                                                                       
##   3. IQ     7.55  3.52 .27*        .14                                
##                        [.05, .47]  [-.09, .36]                        
##                                                                       
##   4. CA     8.76  3.02 .22         .03         .33**                  
##                        [-.00, .43] [-.20, .25] [.11, .52]             
##                                                                       
##   5. PS     17.88 4.84 .36**       .16         .61**       .33**      
##                        [.14, .54]  [-.07, .37] [.45, .74]  [.11, .52] 
##                                                                       
##   6. Count  0.69  0.27 .36**       .17         .30*        .42**      
##                        [.14, .54]  [-.06, .38] [.07, .49]  [.22, .59] 
##                                                                       
##   7. SXJL   3.61  0.72 .06         -.19        -.06        .19        
##                        [-.17, .29] [-.40, .04] [-.28, .17] [-.04, .40]
##                                                                       
##   5           6          
##                          
##                          
##                          
##                          
##                          
##                          
##                          
##                          
##                          
##                          
##                          
##                          
##                          
##                          
##   .50**                  
##   [.31, .65]             
##                          
##   -.07        .20        
##   [-.29, .16] [-.02, .41]
##                          
## 
## Note. M and SD are used to represent mean and standard deviation, respectively.
## Values in square brackets indicate the 95% confidence interval.
## The confidence interval is a plausible range of population correlations 
## that could have caused the sample correlation (Cumming, 2014).
##  * indicates p < .05. ** indicates p < .01.
## 

相关关系:
年龄和智力(IQ)、数学问题解决能力(PS)、数数(Count)呈显著正相关;性别和其他变量没有显著相关;智力(IQ)和计算能力(CA)、数学问题解决能力(PS)、数数(Count)呈显著正相关。因此,在进一步分析中将年龄和智力作为控制变量。

5.在控制了性别、年龄和智力的情况下,数数能力、数学焦虑是否能预测计算能力和数学问题解决能力?

#创建问题5所需数据集
math_dataQ5<-math_data[c(2:7,16)]
#5.1 控制性别、年龄和智力,数数能力、数学焦虑是否能预测计算能力。
model1=lm(CA~Count+SXJL,data=math_dataQ5)
model2=lm(CA~Count+SXJL+gender+age+IQ,data=math_dataQ5)
summary(model1)
## 
## Call:
## lm(formula = CA ~ Count + SXJL, data = math_dataQ5)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.8076 -1.6186 -0.2587  1.3434 14.5736 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   3.9200     1.7219   2.277 0.025787 *  
## Count         4.5410     1.2317   3.687 0.000437 ***
## SXJL          0.4684     0.4555   1.028 0.307205    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.757 on 72 degrees of freedom
## Multiple R-squared:   0.19,  Adjusted R-squared:  0.1675 
## F-statistic: 8.445 on 2 and 72 DF,  p-value: 0.0005073
summary(model2)
## 
## Call:
## lm(formula = CA ~ Count + SXJL + gender + age + IQ, data = math_dataQ5)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -4.815 -1.656 -0.255  1.106 14.937 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept)  1.38241    5.75669   0.240   0.8109  
## Count        3.58800    1.35713   2.644   0.0102 *
## SXJL         0.57119    0.46706   1.223   0.2256  
## gender      -0.14431    0.67454  -0.214   0.8312  
## age          0.22573    0.96488   0.234   0.8157  
## IQ           0.20311    0.09774   2.078   0.0415 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.73 on 68 degrees of freedom
##   (因为不存在,1个观察量被删除了)
## Multiple R-squared:  0.2415, Adjusted R-squared:  0.1857 
## F-statistic:  4.33 on 5 and 68 DF,  p-value: 0.001766
library(psych)
model1<-setCor(CA~Count+SXJL,data=math_dataQ5)

model2<-setCor(CA~Count+SXJL+gender+age+IQ,data=math_dataQ5)

#5.2 控制性别、年龄和智力,数数能力、数学焦虑是否能预测数学问题解决能力。
model3=lm(PS~Count+SXJL,data=math_dataQ5)
model4=lm(PS~Count+SXJL+gender+age+IQ,data=math_dataQ5)
summary(model3)
## 
## Call:
## lm(formula = PS ~ Count + SXJL, data = math_dataQ5)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -8.4593 -2.6684 -0.2881  2.8531 11.2148 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  15.3940     2.6007   5.919 1.01e-07 ***
## Count         9.7245     1.8602   5.228 1.61e-06 ***
## SXJL         -1.1786     0.6879  -1.713    0.091 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.164 on 72 degrees of freedom
## Multiple R-squared:  0.2783, Adjusted R-squared:  0.2583 
## F-statistic: 13.88 on 2 and 72 DF,  p-value: 7.947e-06
summary(model4)
## 
## Call:
## lm(formula = PS ~ Count + SXJL + gender + age + IQ, data = math_dataQ5)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -8.2764 -2.4814 -0.0799  2.2444  6.8105 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   0.9465     7.4031   0.128 0.898645    
## Count         6.2274     1.7453   3.568 0.000664 ***
## SXJL         -0.8126     0.6006  -1.353 0.180542    
## gender       -0.1762     0.8675  -0.203 0.839656    
## age           1.7305     1.2408   1.395 0.167660    
## IQ            0.6552     0.1257   5.213  1.9e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.51 on 68 degrees of freedom
##   (因为不存在,1个观察量被删除了)
## Multiple R-squared:  0.5153, Adjusted R-squared:  0.4797 
## F-statistic: 14.46 on 5 and 68 DF,  p-value: 1.227e-09
library(psych)
model3<-setCor(PS~Count+SXJL,data=math_dataQ5)

model4<-setCor(PS~Count+SXJL+gender+age+IQ,data=math_dataQ5)