install.packages("readxl")
WARNING: Rtools is required to build R packages but is not currently installed. Please download and install the appropriate version of Rtools before proceeding:

https://cran.rstudio.com/bin/windows/Rtools/
Installing package into ‘C:/Users/User/AppData/Local/R/win-library/4.4’
(as ‘lib’ is unspecified)
trying URL 'https://cran.rstudio.com/bin/windows/contrib/4.4/readxl_1.4.3.zip'
Content type 'application/zip' length 1202510 bytes (1.1 MB)
downloaded 1.1 MB
package ‘readxl’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
    C:\Users\User\AppData\Local\Temp\RtmpgX9kRp\downloaded_packages
install.packages("openxlsx")
WARNING: Rtools is required to build R packages but is not currently installed. Please download and install the appropriate version of Rtools before proceeding:

https://cran.rstudio.com/bin/windows/Rtools/
Installing package into ‘C:/Users/User/AppData/Local/R/win-library/4.4’
(as ‘lib’ is unspecified)
trying URL 'https://cran.rstudio.com/bin/windows/contrib/4.4/openxlsx_4.2.5.2.zip'
Content type 'application/zip' length 2370571 bytes (2.3 MB)
downloaded 2.3 MB
package ‘openxlsx’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
    C:\Users\User\AppData\Local\Temp\RtmpgX9kRp\downloaded_packages
install.packages("ggplot2")
WARNING: Rtools is required to build R packages but is not currently installed. Please download and install the appropriate version of Rtools before proceeding:

https://cran.rstudio.com/bin/windows/Rtools/
Installing package into ‘C:/Users/User/AppData/Local/R/win-library/4.4’
(as ‘lib’ is unspecified)
trying URL 'https://cran.rstudio.com/bin/windows/contrib/4.4/ggplot2_3.5.1.zip'
Content type 'application/zip' length 5012105 bytes (4.8 MB)
downloaded 4.8 MB
package ‘ggplot2’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
    C:\Users\User\AppData\Local\Temp\RtmpgX9kRp\downloaded_packages
#install.packages("tidyverse")
install.packages("multcomp")
WARNING: Rtools is required to build R packages but is not currently installed. Please download and install the appropriate version of Rtools before proceeding:

https://cran.rstudio.com/bin/windows/Rtools/
Installing package into ‘C:/Users/User/AppData/Local/R/win-library/4.4’
(as ‘lib’ is unspecified)
trying URL 'https://cran.rstudio.com/bin/windows/contrib/4.4/multcomp_1.4-25.zip'
Content type 'application/zip' length 748772 bytes (731 KB)
downloaded 731 KB
package ‘multcomp’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
    C:\Users\User\AppData\Local\Temp\RtmpgX9kRp\downloaded_packages
install.packages("magick")
WARNING: Rtools is required to build R packages but is not currently installed. Please download and install the appropriate version of Rtools before proceeding:

https://cran.rstudio.com/bin/windows/Rtools/
Installing package into ‘C:/Users/User/AppData/Local/R/win-library/4.4’
(as ‘lib’ is unspecified)
trying URL 'https://cran.rstudio.com/bin/windows/contrib/4.4/magick_2.8.3.zip'
Content type 'application/zip' length 24788347 bytes (23.6 MB)
downloaded 23.6 MB
package ‘magick’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
    C:\Users\User\AppData\Local\Temp\RtmpgX9kRp\downloaded_packages

Upload the file into the dataframe

library(readxl)
library(ggplot2)
library(tidyverse)
library(multcomp)
library(dplyr)
library(magick)
SignIn UI
SignIn UI
data <- read_excel("C:\\Users\\User\\Desktop\\SignInSurvey.xlsx")
print(data)

summary(data)
       Id           Design1         Design2         Design3         Design4     
 Min.   : 1.00   Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:19.25   1st Qu.:4.000   1st Qu.:3.000   1st Qu.:4.000   1st Qu.:2.000  
 Median :37.50   Median :5.000   Median :4.000   Median :5.000   Median :4.000  
 Mean   :37.50   Mean   :4.932   Mean   :4.081   Mean   :4.838   Mean   :3.486  
 3rd Qu.:55.75   3rd Qu.:6.000   3rd Qu.:5.750   3rd Qu.:6.000   3rd Qu.:5.000  
 Max.   :74.00   Max.   :7.000   Max.   :7.000   Max.   :7.000   Max.   :7.000  
# เปลี่ยนรูปแบบจาก wide เป็น narrow
data2 <- data %>%
  pivot_longer(cols = starts_with("Design"),
               names_to = "variable",      
               values_to = "value") %>%
  mutate(variable = as.factor(variable))
# print(data3)

#คำนวณ mean & SD เพื่อนำไปใช้ในการสร้าง Error Bar
summary_data <- data2 %>%
  group_by(variable) %>%
  summarize(
    mean_value = mean(value),
    se = sd(value) / sqrt(n()))

print(summary_data)
NA
#สร้างกราฟแท่งจาก Mean ของแต่ละแบบ พร้อมใส่ Error Bar

ggplot(summary_data, aes(x = variable, y = mean_value)) +
  geom_bar(stat = "identity", fill = "orange", width = 0.6) +
  geom_errorbar(aes(ymin = mean_value - se*1.96, ymax = mean_value + se*1.96), width = 0.2) +
  geom_text(aes(label = round(mean_value, 2), y = mean_value), vjust = -0.5, , hjust = -0.3, size = 3, color = "blue") +
  labs(title = "กราฟแสดงผลความพึงพอใจของแต่ละหน้าจอ SignIn", x = "รูปแบบหน้าจอ", y = "ระดับความพึงพอใจ")

# การวิเคราะห์ ANOVA เพื่อดูผลภาพรวมความต่างว่ามีนัยสำคัญหรือไม่
 anova_result <- aov(value ~ variable , data = data2)
 summary(anova_result)
             Df Sum Sq Mean Sq F value   Pr(>F)    
variable      3  103.2   34.39   11.78 2.64e-07 ***
Residuals   292  852.7    2.92                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
 

จากผลการวิเคราะห์ด้านบนสรุปได้ว่าค่า P Value< 0.05 จึงสรุปได้ว่าระดับความพึงพอใจของไอคอนเหล่านั้นมีความแตกต่างกันอย่างมีนัยสำคัญ

#แล้วมาเปรียบเทียบทีละคู่ว่าต่างกันอย่างมีนัยสำคัญหรือไม่
posthoc_result <- glht(anova_result, linfct = mcp(variable = "Tukey"))
 summary(posthoc_result)

     Simultaneous Tests for General Linear Hypotheses

Multiple Comparisons of Means: Tukey Contrasts


Fit: aov(formula = value ~ variable, data = data2)

Linear Hypotheses:
                       Estimate Std. Error t value Pr(>|t|)    
Design2 - Design1 == 0 -0.85135    0.28094  -3.030   0.0138 *  
Design3 - Design1 == 0 -0.09459    0.28094  -0.337   0.9868    
Design4 - Design1 == 0 -1.44595    0.28094  -5.147   <0.001 ***
Design3 - Design2 == 0  0.75676    0.28094   2.694   0.0371 *  
Design4 - Design2 == 0 -0.59459    0.28094  -2.116   0.1503    
Design4 - Design3 == 0 -1.35135    0.28094  -4.810   <0.001 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Adjusted p values reported -- single-step method)

จากผลการวิเคราะห์ด้านบนที่นำแต่ละการออกแบบหน้าจอมาเปรียบเทียบกันจะเห็นได้ว่าการออกแบบหน้าจอลงชื่อเข้าใช้งานแบบที่ 1 กับแบบที่ 3 นั้นมีระดับผลความพึงพอใจเฉลี่ยไม่ต่างกันมากแล้วทั้งสองแบบมีค่าความแตกต่างทางสถิติที่ไม่ต่างกันอย่างมีนัยยะสำคัญ จึงสรุปได้ว่าเราสามารถใช้แบบใดแบบหนึ่งในการพัฒนาการออกแบบหน้าจอของระบบ

LS0tDQp0aXRsZTogIlNpZ25JbiBTdXJ2ZXkgUmVwb3J0Ig0Kc3VidGl0bGU6ICJBc3N0LiBQcm9mLiBJbnRocmFwb3JuIChKb29wKSBBcmFueWFuYWssIFBoRCINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQpgYGB7cn0NCmluc3RhbGwucGFja2FnZXMoInJlYWR4bCIpDQppbnN0YWxsLnBhY2thZ2VzKCJvcGVueGxzeCIpDQppbnN0YWxsLnBhY2thZ2VzKCJnZ3Bsb3QyIikNCiNpbnN0YWxsLnBhY2thZ2VzKCJ0aWR5dmVyc2UiKQ0KaW5zdGFsbC5wYWNrYWdlcygibXVsdGNvbXAiKQ0KaW5zdGFsbC5wYWNrYWdlcygibWFnaWNrIikNCmBgYA0KDQpVcGxvYWQgdGhlIGZpbGUgaW50byB0aGUgZGF0YWZyYW1lDQoNCg0KYGBge3J9DQpsaWJyYXJ5KHJlYWR4bCkNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShtdWx0Y29tcCkNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KG1hZ2ljaykNCmBgYA0KDQohW1NpZ25JbiBVSV0oL1VzZXJzXFVzZXJcRGVza3RvcFxTdXJ2ZXkgU2lnbnVwICtJY29uXFNpZ25JblRlc3QucG5nKQ0KYGBge3J9DQpkYXRhIDwtIHJlYWRfZXhjZWwoIkM6XFxVc2Vyc1xcVXNlclxcRGVza3RvcFxcU2lnbkluU3VydmV5Lnhsc3giKQ0KcHJpbnQoZGF0YSkNCg0Kc3VtbWFyeShkYXRhKQ0KYGBgDQpgYGB7cn0NCiMg4LmA4Lib4Lil4Li14LmI4Lii4LiZ4Lij4Li54Lib4LmB4Lia4Lia4LiI4Liy4LiBIHdpZGUg4LmA4Lib4LmH4LiZIG5hcnJvdw0KZGF0YTIgPC0gZGF0YSAlPiUNCiAgcGl2b3RfbG9uZ2VyKGNvbHMgPSBzdGFydHNfd2l0aCgiRGVzaWduIiksDQogICAgICAgICAgICAgICBuYW1lc190byA9ICJ2YXJpYWJsZSIsICAgICAgDQogICAgICAgICAgICAgICB2YWx1ZXNfdG8gPSAidmFsdWUiKSAlPiUNCiAgbXV0YXRlKHZhcmlhYmxlID0gYXMuZmFjdG9yKHZhcmlhYmxlKSkNCiMgcHJpbnQoZGF0YTMpDQoNCiPguITguLPguJnguKfguJMgbWVhbiAmIFNEIOC5gOC4nuC4t+C5iOC4reC4meC4s+C5hOC4m+C5g+C4iuC5ieC5g+C4meC4geC4suC4o+C4quC4o+C5ieC4suC4hyBFcnJvciBCYXINCnN1bW1hcnlfZGF0YSA8LSBkYXRhMiAlPiUNCiAgZ3JvdXBfYnkodmFyaWFibGUpICU+JQ0KICBzdW1tYXJpemUoDQogICAgbWVhbl92YWx1ZSA9IG1lYW4odmFsdWUpLA0KICAgIHNlID0gc2QodmFsdWUpIC8gc3FydChuKCkpKQ0KDQpwcmludChzdW1tYXJ5X2RhdGEpDQoNCmBgYA0KYGBge3J9DQoj4Liq4Lij4LmJ4Liy4LiH4LiB4Lij4Liy4Lif4LmB4LiX4LmI4LiH4LiI4Liy4LiBIE1lYW4g4LiC4Lit4LiH4LmB4LiV4LmI4Lil4Liw4LmB4Lia4LiaIOC4nuC4o+C5ieC4reC4oeC5g+C4quC5iCBFcnJvciBCYXINCg0KZ2dwbG90KHN1bW1hcnlfZGF0YSwgYWVzKHggPSB2YXJpYWJsZSwgeSA9IG1lYW5fdmFsdWUpKSArDQogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiLCBmaWxsID0gIm9yYW5nZSIsIHdpZHRoID0gMC42KSArDQogIGdlb21fZXJyb3JiYXIoYWVzKHltaW4gPSBtZWFuX3ZhbHVlIC0gc2UqMS45NiwgeW1heCA9IG1lYW5fdmFsdWUgKyBzZSoxLjk2KSwgd2lkdGggPSAwLjIpICsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHJvdW5kKG1lYW5fdmFsdWUsIDIpLCB5ID0gbWVhbl92YWx1ZSksIHZqdXN0ID0gLTAuNSwgLCBoanVzdCA9IC0wLjMsIHNpemUgPSAzLCBjb2xvciA9ICJibHVlIikgKw0KICBsYWJzKHRpdGxlID0gIuC4geC4o+C4suC4n+C5geC4quC4lOC4h+C4nOC4peC4hOC4p+C4suC4oeC4nuC4tuC4h+C4nuC4reC5g+C4iOC4guC4reC4h+C5geC4leC5iOC4peC4sOC4q+C4meC5ieC4suC4iOC4rSBTaWduSW4iLCB4ID0gIuC4o+C4ueC4m+C5geC4muC4muC4q+C4meC5ieC4suC4iOC4rSIsIHkgPSAi4Lij4Liw4LiU4Lix4Lia4LiE4Lin4Liy4Lih4Lie4Li24LiH4Lie4Lit4LmD4LiIIikNCmBgYA0KDQpgYGB7cn0NCiMg4LiB4Liy4Lij4Lin4Li04LmA4LiE4Lij4Liy4Liw4Lir4LmMIEFOT1ZBIOC5gOC4nuC4t+C5iOC4reC4lOC4ueC4nOC4peC4oOC4suC4nuC4o+C4p+C4oeC4hOC4p+C4suC4oeC4leC5iOC4suC4h+C4p+C5iOC4suC4oeC4teC4meC4seC4ouC4quC4s+C4hOC4seC4jeC4q+C4o+C4t+C4reC5hOC4oeC5iA0KIGFub3ZhX3Jlc3VsdCA8LSBhb3YodmFsdWUgfiB2YXJpYWJsZSAsIGRhdGEgPSBkYXRhMikNCiBzdW1tYXJ5KGFub3ZhX3Jlc3VsdCkNCiANCmBgYA0KPj4g4LiI4Liy4LiB4Lic4Lil4LiB4Liy4Lij4Lin4Li04LmA4LiE4Lij4Liy4Liw4Lir4LmM4LiU4LmJ4Liy4LiZ4Lia4LiZ4Liq4Lij4Li44Lib4LmE4LiU4LmJ4Lin4LmI4Liy4LiE4LmI4LiyIFAgVmFsdWU8IDAuMDUg4LiI4Li24LiH4Liq4Lij4Li44Lib4LmE4LiU4LmJ4Lin4LmI4Liy4Lij4Liw4LiU4Lix4Lia4LiE4Lin4Liy4Lih4Lie4Li24LiH4Lie4Lit4LmD4LiI4LiC4Lit4LiH4LmE4Lit4LiE4Lit4LiZ4LmA4Lir4Lil4LmI4Liy4LiZ4Lix4LmJ4LiZ4Lih4Li14LiE4Lin4Liy4Lih4LmB4LiV4LiB4LiV4LmI4Liy4LiH4LiB4Lix4LiZ4Lit4Lii4LmI4Liy4LiH4Lih4Li14LiZ4Lix4Lii4Liq4Liz4LiE4Lix4LiNDQoNCg0KYGBge3J9DQoj4LmB4Lil4LmJ4Lin4Lih4Liy4LmA4Lib4Lij4Li14Lii4Lia4LmA4LiX4Li14Lii4Lia4LiX4Li14Lil4Liw4LiE4Li54LmI4Lin4LmI4Liy4LiV4LmI4Liy4LiH4LiB4Lix4LiZ4Lit4Lii4LmI4Liy4LiH4Lih4Li14LiZ4Lix4Lii4Liq4Liz4LiE4Lix4LiN4Lir4Lij4Li34Lit4LmE4Lih4LmIDQpwb3N0aG9jX3Jlc3VsdCA8LSBnbGh0KGFub3ZhX3Jlc3VsdCwgbGluZmN0ID0gbWNwKHZhcmlhYmxlID0gIlR1a2V5IikpDQogc3VtbWFyeShwb3N0aG9jX3Jlc3VsdCkNCmBgYA0KPj4g4LiI4Liy4LiB4Lic4Lil4LiB4Liy4Lij4Lin4Li04LmA4LiE4Lij4Liy4Liw4Lir4LmM4LiU4LmJ4Liy4LiZ4Lia4LiZ4LiX4Li14LmI4LiZ4Liz4LmB4LiV4LmI4Lil4Liw4LiB4Liy4Lij4Lit4Lit4LiB4LmB4Lia4Lia4Lir4LiZ4LmJ4Liy4LiI4Lit4Lih4Liy4LmA4Lib4Lij4Li14Lii4Lia4LmA4LiX4Li14Lii4Lia4LiB4Lix4LiZ4LiI4Liw4LmA4Lir4LmH4LiZ4LmE4LiU4LmJ4Lin4LmI4Liy4LiB4Liy4Lij4Lit4Lit4LiB4LmB4Lia4Lia4Lir4LiZ4LmJ4Liy4LiI4Lit4Lil4LiH4LiK4Li34LmI4Lit4LmA4LiC4LmJ4Liy4LmD4LiK4LmJ4LiH4Liy4LiZ4LmB4Lia4Lia4LiX4Li14LmIIDEg4LiB4Lix4Lia4LmB4Lia4Lia4LiX4Li14LmIIDMg4LiZ4Lix4LmJ4LiZ4Lih4Li14Lij4Liw4LiU4Lix4Lia4Lic4Lil4LiE4Lin4Liy4Lih4Lie4Li24LiH4Lie4Lit4LmD4LiI4LmA4LiJ4Lil4Li14LmI4Lii4LmE4Lih4LmI4LiV4LmI4Liy4LiH4LiB4Lix4LiZ4Lih4Liy4LiB4LmB4Lil4LmJ4Lin4LiX4Lix4LmJ4LiH4Liq4Lit4LiH4LmB4Lia4Lia4Lih4Li14LiE4LmI4Liy4LiE4Lin4Liy4Lih4LmB4LiV4LiB4LiV4LmI4Liy4LiH4LiX4Liy4LiH4Liq4LiW4Li04LiV4Li04LiX4Li14LmI4LmE4Lih4LmI4LiV4LmI4Liy4LiH4LiB4Lix4LiZ4Lit4Lii4LmI4Liy4LiH4Lih4Li14LiZ4Lix4Lii4Lii4Liw4Liq4Liz4LiE4Lix4LiNIOC4iOC4tuC4h+C4quC4o+C4uOC4m+C5hOC4lOC5ieC4p+C5iOC4suC5gOC4o+C4suC4quC4suC4oeC4suC4o+C4luC5g+C4iuC5ieC5geC4muC4muC5g+C4lOC5geC4muC4muC4q+C4meC4tuC5iOC4h+C5g+C4meC4geC4suC4o+C4nuC4seC4kuC4meC4suC4geC4suC4o+C4reC4reC4geC5geC4muC4muC4q+C4meC5ieC4suC4iOC4reC4guC4reC4h+C4o+C4sOC4muC4mg0K