作业要求:
某研究测试了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
##
数据筛选:
- 编号201002:缺少智力(IG)得分,NA
- 编号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))
)| 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)