mydata <- read_excel("excelmagistrska.xlsx", sheet = "Sheet1", col_names = TRUE)
mydata <- mydata[-1, ]  # drop the 2nd header row (full question text, not data)
#Identify values -1,-2 and replace them with NA. -3 values were deleted in excel
# -1 means: The person has not answered the specific question
# -2 means: Person did not respond because it did not satisfy if sentence

mydata[mydata == -1] <- NA
mydata[mydata == -2] <- NA

num_cols <- setdiff(names(mydata), c("Q7", "Q9"))
mydata[num_cols] <- lapply(mydata[num_cols], function(x) suppressWarnings(as.numeric(x)))
head(mydata, 10)
## # A tibble: 10 × 41
##       Q1    Q2    Q3    Q4    Q5    Q6 Q7           Q8 Q9      Q10   Q11   Q12   Q13  Q14a  Q14b  Q14c  Q14d  Q15a  Q15b
##    <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>     <dbl> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
##  1     2     3     1     1     2     1 Petra pa…     3 <NA>      1     3     1     6     4     4     4     4     4     4
##  2     2     4     1     1     3     1 Parovel       2 <NA>      1     3     3     5     3     2     2     2     2     2
##  3     2     1     1     1     1     2 <NA>         NA <NA>     NA     3     1     6     3     4     3     2     2     3
##  4     3     2     1     1     1     2 <NA>         NA <NA>     NA     2     3     4     3     2     3     2     2     2
##  5     2     2     1     1     4     1 Se ne sp…     1 <NA>      2     3     4     6     4     4     4     2     3     4
##  6     2     1     1     1     2     1 Mojtribe      8 Craft     1     1     2     6     4     4     4     4     4     4
##  7     2     2     1     1     3     2 <NA>         NA <NA>     NA     2     2     6     4     4     4     3     3     5
##  8     2     3     1     1     4     2 <NA>         NA <NA>     NA     1     4     6     2     3     3     3     1     2
##  9     4     2     1     1     3     2 <NA>         NA <NA>     NA     2     2     5     3     4     4     3     4     4
## 10     3     3     1     1     3     1 Aeon          9 Aeon      1     3     2     3     3     3     3     3     3     3
## # ℹ 22 more variables: Q15c <dbl>, Q15d <dbl>, Q16a <dbl>, Q16b <dbl>, Q16c <dbl>, Q16d <dbl>, Q17a <dbl>, Q17b <dbl>,
## #   Q17c <dbl>, Q17d <dbl>, Q18a <dbl>, Q18b <dbl>, Q18c <dbl>, Q18d <dbl>, Q19a <dbl>, Q19b <dbl>, Q19c <dbl>,
## #   Q19d <dbl>, Q20 <dbl>, Q21 <dbl>, Q22 <dbl>, Q23 <dbl>

Description:

# Reverse-code frequency items so HIGHER = MORE frequent (scale is 1..6)
mydata$ExposureFreq     <- 7 - mydata$Q12
mydata$ActiveSearchFreq <- 7 - mydata$Q13
mydata$BirthF <- factor(mydata$Q1,
                              levels = c(2, 3, 4, 5),
                              labels = c("1997–2000", "2001–2004", "2005–2008", "2009–2012"))

mydata$ActivityF <- factor(mydata$Q2, 
                              levels = c(1, 2, 3, 4),  
                              labels = c("5 of more times per week", "3-4 times per week", "1–2 times per week", "A few times a month"))

mydata$SocialMediaActivityF <- factor(mydata$Q3, 
                               levels = c(1,2,3,4,5),
                               labels = c("Several times per day","Once per day", "1–3 times per week","1–3 times per month","Less than once a month"))

mydata$PlatformF <- factor(mydata$Q4,
                              levels = c(1, 2, 3, 4, 5),  
                              labels = c("Instagram", "TikTok", "Youtube", "Facebook", "Other"))

mydata$PurchaseHabitsF <- factor(mydata$Q5, 
                               levels = c(1,2,3,4,5),
                               labels = c("Several times a month","Once a month", "Every few months", "Once or twice a year", "Less than once a year/never"))

mydata$PurchaseInflF <- factor(mydata$Q6, 
                               levels = c(1,2),labels = c("Yes","No"))

mydata$BrandF <- factor(mydata$Q8, 
                               levels = c(1,2,3,4,5,6,7,8,9,10,11,12,13,14),
                               labels = c("Adidas","Nike","SWY","Lelosi", "Under Armour", "Gymshark", "Lululemon", "Craft", "Aeon", "Myprotein","UniQlo", "Luactive", "Prozis", "Rúngne"))

mydata$InfluencerExposureF <- factor(mydata$Q12, 
                               levels = c(1,2,3,4,5,6),
                               labels = c("Daily","Several times a week", "Once a week","Two to three times a month","About once a month","Less often than once a month"))

mydata$ContentSearchF <- factor(mydata$Q13, 
                               levels = c(1,2,3,4,5,6),
                               labels = c("Daily","Several times a week", "Once a week","Two to three times a month","About once a month","Less often than once a month"))

mydata$GenderF <- factor(mydata$Q20,
                              levels = c(1, 2),  
                              labels = c("Male", "Female")) 

mydata$EducationF <- factor(mydata$Q21,
                              levels = c(1, 2, 3, 4, 5, 6),  
                              labels = c("Primary school", "Lower or vocational secondary school", "Upper secondary", "Higher vocational education", "University degree", "Postgraduate"))

mydata$AreaF <- factor(mydata$Q22,
                              levels = c(1, 2, 3),  
                              labels = c("Urban", "Suburban", "Rural"))

mydata$InfluencerSizeF <- factor(mydata$Q11,
                              levels = c(1, 2, 3, 4, 5),  
                              labels = c("Nano Influencers", "Mikro Influencers", "Makro influencers", "Mega influencers", "Celebrity influencers"))

mydata$IncomeF <- factor(mydata$Q23,
                          levels = c(1, 2, 3, 4, 5, 6, 7),  
                              labels = c("Up to 500 EUR", "501–1,000 EUR", "1,001–1,500 EUR", "1,501–2,000 EUR", "2,001–2,500 EUR","2,501 EUR or more","Prefer not to answer"))
mydata$Credibility  <- rowMeans(mydata[, c("Q14a", "Q14b", "Q14c", "Q14d")], na.rm = FALSE)
mydata$Authenticity <- rowMeans(mydata[, c("Q15a", "Q15b", "Q15c", "Q15d")], na.rm = FALSE)
mydata$Engagement   <- rowMeans(mydata[, c("Q16a", "Q16b", "Q16c", "Q16d")], na.rm = FALSE)
mydata$Parasocial   <- rowMeans(mydata[, c("Q17a", "Q17b", "Q17c", "Q17d")], na.rm = FALSE)
mydata$Homophily    <- rowMeans(mydata[, c("Q18a", "Q18b", "Q18c", "Q18d")], na.rm = FALSE)
mydata$BrandLoyalty <- rowMeans(mydata[, c("Q19a", "Q19b", "Q19c", "Q19d")], na.rm = FALSE)

model_vars <- c("BrandLoyalty", "Credibility", "Authenticity", "Engagement",
                 "Parasocial", "Homophily")
mydata <- mydata[complete.cases(mydata[, model_vars]), ]
row.names(mydata) <- NULL

analytic <- mydata[complete.cases(mydata[, model_vars]), ]
alpha_of <- function(items) suppressWarnings(psych::alpha(mydata[, items])$total$raw_alpha)
data.frame(
  Construct = c("Credibility","Authenticity","Engagement","Parasocial","Homophily","BrandLoyalty"),
  Alpha = round(c(
    alpha_of(c("Q14a","Q14b","Q14c","Q14d")),
    alpha_of(c("Q15a","Q15b","Q15c","Q15d")),
    alpha_of(c("Q16a","Q16b","Q16c","Q16d")),
    alpha_of(c("Q17a","Q17b","Q17c","Q17d")),
    alpha_of(c("Q18a","Q18b","Q18c","Q18d")),
    alpha_of(c("Q19a","Q19b","Q19c","Q19d"))
  ), 3)
)
##      Construct Alpha
## 1  Credibility 0.871
## 2 Authenticity 0.898
## 3   Engagement 0.826
## 4   Parasocial 0.859
## 5    Homophily 0.851
## 6 BrandLoyalty 0.825

Internal consistency of the measurement scales was assessed using Cronbach’s alpha prior to the regression analyses (how well selected questions behave within one indicator Q14a–Q14d = Credibility) All constructs demonstrated good internal consistency, with Cronbach’s alpha coefficients ranging from .825 to .898 - exceeding the commonly accepted threshold of .70, the scales were considered sufficiently reliable for subsequent analyses.

Descriptive statistics of the constructs

round(stat.desc(mydata[, c("BrandLoyalty", "Credibility", "Authenticity",
                            "Engagement", "Parasocial", "Homophily")]), 2)
##              BrandLoyalty Credibility Authenticity Engagement Parasocial Homophily
## nbr.val             73.00       73.00        73.00      73.00      73.00     73.00
## nbr.null             0.00        0.00         0.00       0.00       0.00      0.00
## nbr.na               0.00        0.00         0.00       0.00       0.00      0.00
## min                  2.00        2.00         1.75       1.00       1.00      1.00
## max                  5.00        5.00         5.00       4.75       5.00      5.00
## range                3.00        3.00         3.25       3.75       4.00      4.00
## sum                239.75      273.50       279.50     203.00     238.00    243.00
## median               3.25        3.75         4.00       2.50       3.50      3.25
## mean                 3.28        3.75         3.83       2.78       3.26      3.33
## SE.mean              0.10        0.09         0.09       0.11       0.11      0.10
## CI.mean.0.95         0.19        0.18         0.19       0.22       0.23      0.19
## var                  0.69        0.57         0.64       0.93       0.96      0.67
## std.dev              0.83        0.75         0.80       0.96       0.98      0.82
## coef.var             0.25        0.20         0.21       0.35       0.30      0.25

Authenticity (M = 3.83) and credibility (M = 3.75) are rated highest, engagement lowest (M = 2.78), and brand loyalty is moderate (M = 3.28). All scores are approximately normally distributed.

#Multicollinearity checks

scatterplotMatrix(mydata[, c("BrandLoyalty", "Credibility", "Authenticity",
                              "Engagement", "Parasocial", "Homophily")],
                   smooth = FALSE)

Visual inspection of the scatterplots indicated positively linear relationships between brand loyalty and the predictor variables, with no pronounced nonlinear patterns observed.

rcorr(as.matrix(mydata[, c("BrandLoyalty", "Credibility", "Authenticity",
                            "Engagement", "Parasocial", "Homophily")]))
##              BrandLoyalty Credibility Authenticity Engagement Parasocial Homophily
## BrandLoyalty         1.00        0.58         0.47       0.67       0.66      0.49
## Credibility          0.58        1.00         0.82       0.55       0.66      0.53
## Authenticity         0.47        0.82         1.00       0.54       0.67      0.45
## Engagement           0.67        0.55         0.54       1.00       0.75      0.51
## Parasocial           0.66        0.66         0.67       0.75       1.00      0.71
## Homophily            0.49        0.53         0.45       0.51       0.71      1.00
## 
## n= 73 
## 
## 
## P
##              BrandLoyalty Credibility Authenticity Engagement Parasocial Homophily
## BrandLoyalty               0           0            0          0          0       
## Credibility   0                        0            0          0          0       
## Authenticity  0            0                        0          0          0       
## Engagement    0            0           0                       0          0       
## Parasocial    0            0           0            0                     0       
## Homophily     0            0           0            0          0

All constructs correlate positively and significantly with brand loyalty (all p < .001); engagement (r = .67) and parasocial relationship (r = .66) most strongly.

We can also observe very high credibility–authenticity correlation (r = .82) and the strong engagement–parasocial (r = .75) and parasocial–homophily (r = .71) correlations.

These foreshadow the shared-variance issues examined below.

Regression assumptions

fit1 <- lm(BrandLoyalty ~ Credibility + Authenticity + Engagement +
             Parasocial + Homophily,
           data = mydata)
summary(fit1)
## 
## Call:
## lm(formula = BrandLoyalty ~ Credibility + Authenticity + Engagement + 
##     Parasocial + Homophily, data = mydata)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.27056 -0.44078  0.01961  0.42281  1.17126 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)   
## (Intercept)   0.968487   0.386511   2.506  0.01466 * 
## Credibility   0.416796   0.167615   2.487  0.01539 * 
## Authenticity -0.249102   0.157295  -1.584  0.11798   
## Engagement    0.333882   0.106669   3.130  0.00259 **
## Parasocial    0.231911   0.139628   1.661  0.10140   
## Homophily     0.007028   0.120363   0.058  0.95361   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5752 on 67 degrees of freedom
## Multiple R-squared:  0.5514, Adjusted R-squared:  0.5179 
## F-statistic: 16.47 on 5 and 67 DF,  p-value: 1.424e-10
# Normality of residuals
mydata$StdResid <- round(rstandard(fit1), 3)
mydata$CooksD   <- round(cooks.distance(fit1), 3)

hist(mydata$StdResid,
     xlab = "Standardized residuals",
     ylab = "Frequency",
     main = "Histogram of standardized residuals")

No outliers above 3, we can assume that the normality is adequately satisfied.

# Homoscedasticity
ols_test_breusch_pagan(fit1)
## 
##  Breusch Pagan Test for Heteroskedasticity
##  -----------------------------------------
##  Ho: the variance is constant            
##  Ha: the variance is not constant        
## 
##                   Data                   
##  ----------------------------------------
##  Response : BrandLoyalty 
##  Variables: fitted values of BrandLoyalty 
## 
##         Test Summary         
##  ----------------------------
##  DF            =    1 
##  Chi2          =    0.1017924 
##  Prob > Chi2   =    0.7496892

H0: variance is constant (homoscedastic)

The Breusch–Pagan test was conducted to assess the assumption of homoscedasticity. The test was not statistically significant, chi squared = 0.10, p = .750, indicating no evidence of heteroskedasticity. Therefore, the assumption of constant variance was considered satisfied.

# Multicollinearity
vif(fit1)
##  Credibility Authenticity   Engagement   Parasocial    Homophily 
##     3.454675     3.457208     2.290866     4.090931     2.106444
mean(vif(fit1))
## [1] 3.080025

all VIFs are below 5 (average = 3.08)

# Influence
hist(mydata$CooksD,
     xlab = "Cooks distance",
     ylab = "Frequency",
     main = "Histogram of Cooks distances")

We dont have any distances above 1.

shapiro.test(mydata$StdResid)
## 
##  Shapiro-Wilk normality test
## 
## data:  mydata$StdResid
## W = 0.98627, p-value = 0.6153

p < .05 - reject H0 - residuals are NOT normally distributed p > .05 - fail to reject H0 - residuals ARE (consistent with) normally distributed

head(mydata[order(mydata$StdResid), c("StdResid", "CooksD")], 5)
## # A tibble: 5 × 2
##   StdResid CooksD
##      <dbl>  <dbl>
## 1    -2.25  0.03 
## 2    -1.75  0.065
## 3    -1.74  0.113
## 4    -1.70  0.025
## 5    -1.65  0.021
head(mydata[order(-mydata$CooksD), c("StdResid", "CooksD")], 5)
## # A tibble: 5 × 2
##   StdResid CooksD
##      <dbl>  <dbl>
## 1     1.67  0.123
## 2     2.18  0.121
## 3     2.18  0.114
## 4    -1.74  0.113
## 5     2.02  0.1
mydata$StdFittedValues <- scale(fit1$fitted.values)

scatterplot(y = mydata$StdResid, x = mydata$StdFittedValues,
            ylab = "Standardized residuals",
            xlab = "Standardized fitted values",
            boxplots = FALSE,
            regLine = FALSE,
            smooth = FALSE)

Linearity OK points look random around 0 across the whole X range. Homoscedasticity OK since vertical spread of points looks roughly constant left to right (no funnel/fan shape).

Multiple regression (H1–H5)

summary(fit1)
## 
## Call:
## lm(formula = BrandLoyalty ~ Credibility + Authenticity + Engagement + 
##     Parasocial + Homophily, data = mydata)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.27056 -0.44078  0.01961  0.42281  1.17126 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)   
## (Intercept)   0.968487   0.386511   2.506  0.01466 * 
## Credibility   0.416796   0.167615   2.487  0.01539 * 
## Authenticity -0.249102   0.157295  -1.584  0.11798   
## Engagement    0.333882   0.106669   3.130  0.00259 **
## Parasocial    0.231911   0.139628   1.661  0.10140   
## Homophily     0.007028   0.120363   0.058  0.95361   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5752 on 67 degrees of freedom
## Multiple R-squared:  0.5514, Adjusted R-squared:  0.5179 
## F-statistic: 16.47 on 5 and 67 DF,  p-value: 1.424e-10

CREDIBILITY: H0: β1 = 0 H1: β1 ≠ 0 p<0.05. We can reject null hypothesis. With every additional increase in one unit of credibility, an average brand loyalty will increase by 0.41, assuming that everything else (authenticity, engagement, parasocial relationship and homophily) remains unchanged.

AUTHENTICITY: H0: β2 = 0 H1: β2 ≠ 0 p>0.05. We cannot reject null hypothesis. We did not find significant effect of Authenticity on Brand Loyalty among Slovenian Gen Z population, assuming that everything else (credibility, engagement, parasocial relationship and homophily) remains unchanged.

ENGAGEMENT: H0: β3 = 0 H1: β3 ≠ 0 p<0.05. We can reject null hypothesis. With every additional increase in one unit of engagement, an average brand loyalty will increase by 0.33, assuming that everything else (authenticity, credibility, parasocial relationship and homophily) remains unchanged.

PARASOCIAL RELATIONSHIP: H0: β4 = 0 H1: β4 ≠ 0 p>0.05. We cannot reject null hypothesis. We did not find significant effect of Parasocial relationships on Brand Loyalty among Slovenian Gen Z population, assuming that everything else (credibility, authenticity, engagement and homophily) remains unchanged.

HOMOPHILY: H0: β5 = 0 H1: β5 ≠ 0 p>0.05. We cannot reject null hypothesis. We did not find significant effect of homophily on Brand Loyalty among Slovenian Gen Z population, assuming that everything else (credibility, authenticity, engagement and parasocial relationship) remains unchanged.

ANOVA: H0: RO2=0 H1: RO2>0 We can reject Ho at p<0,001. We found the linear variability between dependent and at least one explanatory variables.

R squared: 0.55; My H1 was supported (thesis). Credibility, authenticity, engagement, parasocial relationship strength, and homophily jointly significantly predicted brand loyalty, F(5,67)=16.47,p<.001. The model explained approximately 55.1% of the variance in brand loyalty (R2=.551).

My H2 was supported (thesis). Influencer credibility was a significant positive predictor of brand loyalty (b=.417,p=.015).

My H3 was not supported (thesis). Authenticity did not significantly positively predict brand loyalty when the other predictors were controlled for (b=−.249,p=.118).

H4 was supported (thesis). Engagement was a significant positive predictor of brand loyalty (b=.334,p=.003).

sqrt(summary(fit1)$r.squared)
## [1] 0.7425414

Multiple coefficient of correlation: 0,742 - linear relationship between brand loyalty and all 5 explanatory variables is strong.

#standardized coefficients - which variable contributes most? (H2-H5 relative importance)

lm.beta(fit1)
## 
## Call:
## lm(formula = BrandLoyalty ~ Credibility + Authenticity + Engagement + 
##     Parasocial + Homophily, data = mydata)
## 
## Standardized Coefficients::
##  (Intercept)  Credibility Authenticity   Engagement   Parasocial    Homophily 
##           NA  0.378201014 -0.240954005  0.387670889  0.274895442  0.006934678

Highest are credibility and engagement, which is expected since they were significant.

round(cbind(Estimate = coef(fit1), confint(fit1)), 3)
##              Estimate  2.5 % 97.5 %
## (Intercept)     0.968  0.197  1.740
## Credibility     0.417  0.082  0.751
## Authenticity   -0.249 -0.563  0.065
## Engagement      0.334  0.121  0.547
## Parasocial      0.232 -0.047  0.511
## Homophily       0.007 -0.233  0.247
round(cor(
  mydata[, c("BrandLoyalty", "Credibility", "Authenticity",
             "Engagement", "Parasocial", "Homophily")],
  use = "complete.obs"
), 2)
##              BrandLoyalty Credibility Authenticity Engagement Parasocial Homophily
## BrandLoyalty         1.00        0.58         0.47       0.67       0.66      0.49
## Credibility          0.58        1.00         0.82       0.55       0.66      0.53
## Authenticity         0.47        0.82         1.00       0.54       0.67      0.45
## Engagement           0.67        0.55         0.54       1.00       0.75      0.51
## Parasocial           0.66        0.66         0.67       0.75       1.00      0.71
## Homophily            0.49        0.53         0.45       0.51       0.71      1.00

H5 not supported (thesis) at the multivariate level. Although the coefficient for parasocial relationship strength was positive (b=.232), it was not statistically significant (p=.101) when the remaining predictors were controlled for. Although, this may reflect shared variance with other predictors, particularly engagement, with which parasocial relationship strength was strongly correlated (r=.75). Neevertheless, parasocial relationship strength exhibited a strong positive bivariate correlation with brand loyalty (r=.66).

“Interestingly, I would expect that the higher correlation would be between parasocial and homophily.”

Hierarchical (blocked) regression — RQ1 vs RQ3

Whether the relational variables (parasocial, homophily) explain brand loyalty beyond the influencer characteristics (credibility, authenticity, engagement). Fit 2 addresses RQ1; the change from Fit 2 to Fit 3 addresses RQ3.

fit2 <- lm(BrandLoyalty ~ Credibility + Authenticity + Engagement, data = mydata)
fit3 <- lm(BrandLoyalty ~ Credibility + Authenticity + Engagement +
               Parasocial + Homophily, data = mydata)

cat("Fit 2 R^2 =", round(summary(fit2)$r.squared, 3), "\n")
## Fit 2 R^2 = 0.525
cat("Fit 3 R^2 =", round(summary(fit3)$r.squared, 3), "\n")
## Fit 3 R^2 = 0.551
cat("Delta R^2   =", round(summary(fit3)$r.squared - summary(fit2)$r.squared, 3), "\n")
## Delta R^2   = 0.026
anova(fit2, fit3)
## Analysis of Variance Table
## 
## Model 1: BrandLoyalty ~ Credibility + Authenticity + Engagement
## Model 2: BrandLoyalty ~ Credibility + Authenticity + Engagement + Parasocial + 
##     Homophily
##   Res.Df    RSS Df Sum of Sq      F Pr(>F)
## 1     69 23.454                           
## 2     67 22.169  2    1.2848 1.9415 0.1515

The three influencer characteristics alone explain 52.5% of the variance; adding parasocial relationship and homophily raises this only to 55.1%, a non-significant change (r squared difference = .026, F(2, 67) = 1.94, p = .152). The relational block adds no significant explanatory power beyond the characteristics — the empirical answer to RQ3.

Relative-importance analysis (LMG)

Because several predictors are strongly correlated, the LMG method partitions the model’s explained variance fairly among them, giving a more defensible ranking than standardised coefficients (RQ1: which characteristics matter most).

rel <- calc.relimp(fit1, type = "lmg", rela = TRUE)
sort(rel$lmg, decreasing = TRUE)
##   Engagement   Parasocial  Credibility    Homophily Authenticity 
##   0.33185588   0.25946466   0.19935280   0.11050831   0.09881834
set.seed(1234)
boot_rel <- boot.relimp(fit1, b = 1000, type = "lmg", rela = TRUE)
booteval.relimp(boot_rel)
## Response variable: BrandLoyalty 
## Total response variance: 0.6863109 
## Analysis based on 73 observations 
## 
## 5 Regressors: 
## Credibility Authenticity Engagement Parasocial Homophily 
## Proportion of variance explained by model: 55.14%
## Metrics are normalized to sum to 100% (rela=TRUE). 
## 
## Relative importance metrics: 
## 
##                     lmg
## Credibility  0.19935280
## Authenticity 0.09881834
## Engagement   0.33185588
## Parasocial   0.25946466
## Homophily    0.11050831
## 
## Average coefficients for different model sizes: 
## 
##                     1X       2Xs         3Xs         4Xs          5Xs
## Credibility  0.6361685 0.4378675  0.37423325  0.38428480  0.416795908
## Authenticity 0.4810377 0.1211525 -0.04894086 -0.16348675 -0.249102072
## Engagement   0.5795785 0.4489315  0.39364495  0.36255193  0.333882452
## Parasocial   0.5550472 0.4406178  0.34824337  0.27858883  0.231910969
## Homophily    0.4999644 0.2204976  0.11740462  0.05214185  0.007028088
## 
##  
##  Confidence interval information ( 1000 bootstrap replicates, bty= perc ): 
## Relative Contributions with confidence intervals: 
##  
##                                   Lower  Upper
##                  percentage 0.95  0.95   0.95  
## Credibility.lmg  0.1994     ABCD_ 0.0822 0.3356
## Authenticity.lmg 0.0988     ___DE 0.0615 0.1572
## Engagement.lmg   0.3319     ABC__ 0.1805 0.4953
## Parasocial.lmg   0.2595     ABCD_ 0.1561 0.3745
## Homophily.lmg    0.1105     _BCDE 0.0448 0.2423
## 
## Letters indicate the ranks covered by bootstrap CIs. 
## (Rank bootstrap confidence intervals always obtained by percentile method) 
## CAUTION: Bootstrap confidence intervals can be somewhat liberal. 
## 
##  
##  Differences between Relative Contributions: 
##  
##                                              Lower   Upper
##                              difference 0.95 0.95    0.95   
## Credibility-Authenticity.lmg  0.1005     *    0.0017  0.2099
## Credibility-Engagement.lmg   -0.1325         -0.3725  0.1220
## Credibility-Parasocial.lmg   -0.0601         -0.2540  0.1483
## Credibility-Homophily.lmg     0.0888         -0.0984  0.2617
## Authenticity-Engagement.lmg  -0.2330     *   -0.4284 -0.0423
## Authenticity-Parasocial.lmg  -0.1606     *   -0.2842 -0.0289
## Authenticity-Homophily.lmg   -0.0117         -0.1482  0.0829
## Engagement-Parasocial.lmg     0.0724         -0.1338  0.2881
## Engagement-Homophily.lmg      0.2213         -0.0095  0.4274
## Parasocial-Homophily.lmg      0.1490         -0.0213  0.2857
## 
## * indicates that CI for difference does not include 0. 
## CAUTION: Bootstrap confidence intervals can be somewhat liberal.

If we partition the r squared (55,1%) variance of the model among five predictors we can observe that engagement holds the highest share (33%), following by parasocial(26%) > credibility (20%) > homophily (11%) > authenticity (10%). However, we cannot conclude that engagement is statistically more important than Parasocial or Credibility, since bootstrap comparisons indicated that the relative contributions of these three predictors did not differ significantly from one another.

What interestingly stands out here is that ordinary multiple regression says Parasocial (b=.232 at p=.001), however LMG asks something different in terms of how much unique information does Parasocial provide after four other predictors simultaneously controlled. Parasocial accounts for a substantial share of the model’s explained variance when shared explanatory variance is allocated across correlated predictors. However, it its significance, again, is probably negligent because of the information shared with the other predictors (Engagement (r=.75), Homophily (r=.71),Authenticity (.67), and Credibility (.66).

My H5 remains not supported based on the hypothesis test specified, but additional analyses suggest that parasocial relationships are nevertheless substantially associated with the explanatory structure of Brand Loyalty and that their explanatory information overlaps considerably with the other influencer-related constructs.

Mediation analysis (H6)

Whether homophily mediates the parasocial → brand loyalty relationship, using the causal-steps logic plus a bootstrapped test of the indirect effect (5,000 resamples).

#Step 1: total effect - does PSR predict Brand Loyalty at all?

step1 <- lm(BrandLoyalty ~ Parasocial, data = mydata)
summary(step1)
## 
## Call:
## lm(formula = BrandLoyalty ~ Parasocial, data = mydata)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.41731 -0.44483 -0.05607  0.44393  1.30403 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   1.4746     0.2566   5.747 2.10e-07 ***
## Parasocial    0.5551     0.0754   7.361 2.54e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6283 on 71 degrees of freedom
## Multiple R-squared:  0.4329, Adjusted R-squared:  0.4249 
## F-statistic: 54.19 on 1 and 71 DF,  p-value: 2.541e-10

H0: b(Parasocial) = 0 ; H1: b(Parasocial) ≠ 0 b = 0.555, p = 2.54e-10 - reject H0. There is a significant total effect of Parasocial relationship on Brand Loyalty to be explained. Therefore people with stronger parasocial relationship, tend to report greater brand loyalty.

#Step 2: does PSR predict the mediator, Homophily?

step2 <- lm(Homophily ~ Parasocial, data = mydata)
summary(step2)
## 
## Call:
## lm(formula = Homophily ~ Parasocial, data = mydata)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.88045 -0.38045  0.01696  0.38245  1.36955 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1.40627    0.23729   5.926 1.02e-07 ***
## Parasocial   0.58967    0.06973   8.457 2.38e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.581 on 71 degrees of freedom
## Multiple R-squared:  0.5018, Adjusted R-squared:  0.4948 
## F-statistic: 71.52 on 1 and 71 DF,  p-value: 2.379e-12

Parasocial → Homophily H0: b(Parasocial) = 0 ; H1: b(Parasocial) ≠ 0 b = 0.589, p = 2.38e-12 - reject H0. Parasocial relationship strongly predicts Homophily — path a is present.

#Step 3: PSR + Homophily -> Brand Loyalty together

step3 <- lm(BrandLoyalty ~ Parasocial + Homophily, data = mydata)
summary(step3)
## 
## Call:
## lm(formula = BrandLoyalty ~ Parasocial + Homophily, data = mydata)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.43282 -0.44400 -0.05492  0.45045  1.32832 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1.39667    0.31551   4.427 3.44e-05 ***
## Parasocial   0.52235    0.10744   4.862 6.89e-06 ***
## Homophily    0.05545    0.12907   0.430    0.669    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6319 on 70 degrees of freedom
## Multiple R-squared:  0.4344, Adjusted R-squared:  0.4182 
## F-statistic: 26.88 on 2 and 70 DF,  p-value: 2.183e-09

Homophily, controlling for Parasocial: H0: b(Homophily) = 0 ; H1: b(Homophily) ≠ 0 b = 0.055, p = 0.669 - fail to reject H0. Homophily does not significantly predict Brand Loyalty once Parasocial is controlled for.

Parasocial, controlling for Homophily: b = 0.522, p = 6.89e-06 — still significant, and barely smaller than the total effect in Step 1 (0.555 → 0.522).

Homophily doesn’t appear to be the mechanism connecting parasocial relationships to brand loyalty; instead, Parasocial relationship has a fairly direct effect on Brand Loyalty largely independent of Homophily. Once Parasocial is controlled, Homophily provides essentially no statistically significant additional prediction of Brand Loyalty.

#Step 4: formal bootstrapped test of the indirect effect (a*b)

set.seed(1234)
med_fit <- mediation::mediate(
  model.m = step2,          #Homophily ~ Parasocial
  model.y = step3,          #BrandLoyalty ~ Parasocial + Homophily
  treat = "Parasocial",
  mediator = "Homophily",
  boot = TRUE, sims = 5000
)
summary(med_fit)
## 
## Causal Mediation Analysis 
## 
## Nonparametric Bootstrap Confidence Intervals with the Percentile Method
## 
##                 Estimate 95% CI Lower 95% CI Upper p-value    
## ACME            0.032695    -0.132514     0.230217  0.6952    
## ADE             0.522352     0.308295     0.702438  <2e-16 ***
## Total Effect    0.555047     0.420988     0.676442  <2e-16 ***
## Prop. Mediated  0.058906    -0.258228     0.416095  0.6952    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Sample Size Used: 73 
## 
## 
## Simulations: 5000

H0: ACME = 0 (no indirect effect / no mediation) H1: ACME ≠ 0

ACME (average causal mediation effect, Parasocial - Homophily - Brand Loyalty) = 0.033, 95% CI [-0.133, 0.230], p = .695. We fail to reject Ho, consequently H6 (thesis) is not supported. The indirect effect was small and nonsignificant (ACME = .033, p = .695), with only an estimated 5.9% of the total effect mediated. However, the relatively wide confidence interval (95% CI [−.133, .230]) indicates some uncertainty. Therefore, the results provide no evidence that homophily mediates the relationship between parasocial relationship strength and brand loyalty.

ADE (direct effect of Parasocial, not through Homophily) = 0.522, 95% CI [0.308, 0.702], p < .001. highly significant. Total Effect = 0.555, 95% CI [0.421, 0.676], p < .001. Prop. Mediated = 5.9%, CI crosses zero. The estimated proportion mediated was 5.9%, however, not significant.

Consistant with this findings, A bootstrapped mediation analysis (5,000 resamples) was conducted to test whether Homophily mediates the relationship between Parasocial relationship and Brand Loyalty (H6). The indirect effect (ACME) was not statistically significant (β = .033, 95% CI [-.133, .233], p = .695), while the direct effect of Parasocial relationship on Brand Loyalty remained significant (β = .522, 95% CI [.308, .702], p < .001). The proportion of the total effect mediated by Homophily was negligible (5.9%) and not significant. These results indicate that H6 was not supported: Homophily does not mediate the relationship between parasocial relationships and brand loyalty in this sample. Instead, parasocial relationships appear to influence brand loyalty directly.

Homophily just isn’t doing much work in explaining Brand Loyalty, whether as a direct predictor or as a mediator (as also seen in regression model).

Group differences (RQ2 and secondary comparisons)

Brand loyalty across influencer tiers (H7)

Whether brand loyalty differs across the five influencer tiers, using one-way ANOVA plus the non-parametric Kruskal–Wallis test as a robustness check.

mydata %>%
  group_by(InfluencerSizeF) %>%
  summarise(n = n(),
            mean = round(mean(BrandLoyalty), 2),
            sd = round(sd(BrandLoyalty), 2))
## # A tibble: 5 × 4
##   InfluencerSizeF           n  mean    sd
##   <fct>                 <int> <dbl> <dbl>
## 1 Nano Influencers          7  3.43  0.53
## 2 Mikro Influencers        31  3.06  0.76
## 3 Makro influencers        20  3.29  0.85
## 4 Mega influencers         11  3.68  1.01
## 5 Celebrity influencers     4  3.69  0.9

Numerically, Mikro is lowest and Mega/Celebrity are highest- but note Celebrity has only n = 4, so that group barely has any statistical power at all.

#assumption 1: normality of Brand Loyalty within each tier

mydata %>%
  group_by(InfluencerSizeF) %>%
  shapiro_test(BrandLoyalty)
## # A tibble: 5 × 4
##   InfluencerSizeF       variable     statistic      p
##   <fct>                 <chr>            <dbl>  <dbl>
## 1 Nano Influencers      BrandLoyalty     0.894 0.294 
## 2 Mikro Influencers     BrandLoyalty     0.928 0.0383
## 3 Makro influencers     BrandLoyalty     0.920 0.0990
## 4 Mega influencers      BrandLoyalty     0.909 0.235 
## 5 Celebrity influencers BrandLoyalty     0.828 0.163

normal distribution in every group (p > .05) except Mikro (p = .038) — with n = 31 there

#assumption 2: homogeneity of variance across tiers

leveneTest(BrandLoyalty ~ InfluencerSizeF, data = mydata)
## Levene's Test for Homogeneity of Variance (center = median)
##       Df F value Pr(>F)
## group  4   1.147  0.342
##       68

H0: variances are equal across tiers (homogeneity - what we want) H1: variances differ

F(4,68) = 1.15, p = .342. We fail to reject H0 as variances are homogeneous. Standard ANOVA’s equal-variance assumption is satisfied.

#one-way ANOVA (H7)

aov_tier <- aov(BrandLoyalty ~ InfluencerSizeF, data = mydata)
summary(aov_tier)
##                 Df Sum Sq Mean Sq F value Pr(>F)
## InfluencerSizeF  4   4.14  1.0359   1.556  0.196
## Residuals       68  45.27  0.6657

H0: mean Brand Loyalty is equal across all 5 tiers H1: at least one tier’s mean differs

We fail to reject H0. Therefore, H7 was not supported (thesis). A one-way ANOVA showed no statistically significant differences in brand loyalty across the five influencer-size categories, F(4,68)=1.56,p=.196. Thus, the results provide no evidence that brand loyalty differs according to the size category of the influencer primarily followed by Generation Z slovenians.

#effect size

eta_squared(aov_tier)
## InfluencerSizeF 
##      0.08385766

eta squared = proportion of variance in Brand Loyalty explained by tier membership

interpret_eta_squared(0.08, rules = "cohen1992")
## [1] "small"
## (Rules: cohen1992)

eta squared = 0.08 —based on eta squared we can see that the effect size is small, but with p = .196 it’s not statistically distinguishable from zero. This is very likely a power problem (Celebrity n=4, Nano n=7) rather than evidence of “no effect at all” as the descriptive means do show a real numeric spread.

#post-hoc: WHICH tiers differ from each other

TukeyHSD(aov_tier)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = BrandLoyalty ~ InfluencerSizeF, data = mydata)
## 
## $InfluencerSizeF
##                                                 diff        lwr       upr     p adj
## Mikro Influencers-Nano Influencers      -0.372119816 -1.3289466 0.5847069 0.8111506
## Makro influencers-Nano Influencers      -0.141071429 -1.1451998 0.8630569 0.9948070
## Mega influencers-Nano Influencers        0.253246753 -0.8522622 1.3587557 0.9675641
## Celebrity influencers-Nano Influencers   0.258928571 -1.1742117 1.6920688 0.9864775
## Makro influencers-Mikro Influencers      0.231048387 -0.4247353 0.8868321 0.8601240
## Mega influencers-Mikro Influencers       0.625366569 -0.1770850 1.4278181 0.1982474
## Celebrity influencers-Mikro Influencers  0.631048387 -0.5837230 1.8458198 0.5943241
## Mega influencers-Makro influencers       0.394318182 -0.4639853 1.2526217 0.6997521
## Celebrity influencers-Makro influencers  0.400000000 -0.8523681 1.6523681 0.8977736
## Celebrity influencers-Mega influencers   0.005681818 -1.3293471 1.3407107 1.0000000

#non-parametric backup (recommended as the primary test if group sizes are small/uneven or normality

kruskal.test(BrandLoyalty ~ InfluencerSizeF, data = mydata)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  BrandLoyalty by InfluencerSizeF
## Kruskal-Wallis chi-squared = 5.5434, df = 4, p-value = 0.2359

H0: all distribution locations of variables are the same H1: at least one is different

chi squared( at df = 4) = 5.54, p = .236. We fail to reject H0. Confirms the ANOVA result.

Conclusion: H7 is not supported. Brand loyalty did not differ significantly across influencer tiers (nano, micro, macro, mega, celebrity) in this sample, F(4, 68) = 1.56, p = .196, η² = .08; the non-parametric Kruskal-Wallis test confirmed this (χ²(4) = 5.54, p = .236). Although descriptive means suggested some numeric variation — with micro-influencers showing the lowest brand loyalty (M = 3.06) and mega/celebrity influencers the highest (M ≈ 3.68). This result should be interpreted cautiously given the small and unequal group sizes, particularly for celebrity influencers (n = 4), which limits the statistical power to detect true differences between tiers.

Power caveat. The celebrity (n = 4) and nano (n = 7) groups were very small, limiting the statistical power to detect differences between influencer tiers. Therefore, the nonsignificant result should be interpreted cautiously as insufficient evidence of tier differences rather than evidence that no differences exist.

Brand loyalty across platforms (additional research - RQ2)

mydata %>% group_by(PlatformF) %>%
  summarise(n = n(), 
            mean = round(mean(BrandLoyalty), 2), 
            sd = round(sd(BrandLoyalty), 2))
## # A tibble: 5 × 4
##   PlatformF     n  mean    sd
##   <fct>     <int> <dbl> <dbl>
## 1 Instagram    50  3.22  0.8 
## 2 TikTok       10  3.2   0.71
## 3 Youtube       9  3.75  1.08
## 4 Facebook      2  3.75  0.35
## 5 Other         2  2.62  0.88
summary(aov(BrandLoyalty ~ PlatformF, data = mydata))
##             Df Sum Sq Mean Sq F value Pr(>F)
## PlatformF    4   3.50  0.8755   1.297   0.28
## Residuals   68  45.91  0.6752
kruskal.test(BrandLoyalty ~ PlatformF, data = mydata)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  BrandLoyalty by PlatformF
## Kruskal-Wallis chi-squared = 4.866, df = 4, p-value = 0.3013

Interpretation. Brand loyalty did not differ significantly across primary social-media platforms, F(4,68)=1.30,p=.280. The Kruskal–Wallis test produced the same conclusion, chi squared(4)= 4.87,p=.301.

Platform groups were highly unbalanced, particularly for Facebook (n = 2), which limited the power to detect platform differences. However, this imbalance is consistent with expected social-media usage patterns among Generation Z, who are more concentrated on platforms such as Instagram, TikTok, and YouTube. Therefore, the small Facebook subgroup may reflect the characteristics of the target population rather than simply a sampling limitation.

Exposure, active search, and brand loyalty (additional research)

cor.test(
  mydata$ActiveSearchFreq,
  mydata$BrandLoyalty,
  method = "spearman",
  exact = FALSE
)
## 
##  Spearman's rank correlation rho
## 
## data:  mydata$ActiveSearchFreq and mydata$BrandLoyalty
## S = 28635, p-value = 2.869e-07
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##       rho 
## 0.5582632
cor.test(
  mydata$ExposureFreq,
  mydata$BrandLoyalty,
  method = "spearman",
  exact = FALSE
)
## 
##  Spearman's rank correlation rho
## 
## data:  mydata$ExposureFreq and mydata$BrandLoyalty
## S = 58984, p-value = 0.4485
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##        rho 
## 0.09008413

Active search was moderately and positively associated with brand loyalty (r =.56,p<.001), whereas passive exposure was not significantly associated with brand loyalty (r =.09,p=.449). This suggests that brand loyalty is more strongly associated with actively seeking influencer content than with passive exposure to it. Therefore, effortful, self-directed engagement (not passive exposure) accompanies loyalty, as shown in the regression.

Brand loyalty by gender (additional research)

mydata %>% group_by(GenderF) %>%
  summarise(n = n(), 
            mean = round(mean(BrandLoyalty), 2), 
            sd = round(sd(BrandLoyalty), 2))
## # A tibble: 2 × 4
##   GenderF     n  mean    sd
##   <fct>   <int> <dbl> <dbl>
## 1 Male       21  3.62  0.86
## 2 Female     52  3.15  0.78
t.test(BrandLoyalty ~ GenderF, data = mydata)
## 
##  Welch Two Sample t-test
## 
## data:  BrandLoyalty by GenderF
## t = 2.1657, df = 34.105, p-value = 0.03742
## alternative hypothesis: true difference in means between group Male and group Female is not equal to 0
## 95 percent confidence interval:
##  0.02901479 0.91100353
## sample estimates:
##   mean in group Male mean in group Female 
##             3.619048             3.149038
effectsize::cohens_d(
  BrandLoyalty ~ GenderF,
  data = mydata,
  pooled_sd = TRUE
)
## Cohen's d |       95% CI
## ------------------------
## 0.58      | [0.07, 1.10]
## 
## - Estimated using pooled SD.
effectsize::interpret_cohens_d(0.58, rules = "cohen1988")
## [1] "medium"
## (Rules: cohen1988)

Male respondents reported significantly higher brand loyalty (M = 3.62, SD = 0.86) than female respondents (M = 3.15, SD = 0.78), Welch’s t(34.11) = 2.17, p = .037, with a mean difference of 0.47 points (95% CI [0.03, 0.91]). The difference represented a medium effect size (Cohen’s d = 0.58, 95% CI [0.07, 1.10]). Given the unequal group sizes (n = 21 males; n = 52 females), this exploratory finding should be interpreted with some caution.

Demographic & behavioural frequencies

# tidy count + valid percent table for any single variable
freq <- function(df, var) {
  df %>%
    janitor::tabyl(!!rlang::sym(var)) %>%
    janitor::adorn_pct_formatting(digits = 1)
}
freq(mydata, "GenderF")
##  GenderF  n percent
##     Male 21   28.8%
##   Female 52   71.2%
freq(mydata, "BirthF")
##     BirthF  n percent
##  1997–2000 43   58.9%
##  2001–2004 19   26.0%
##  2005–2008 10   13.7%
##  2009–2012  1    1.4%
freq(mydata, "ActivityF")
##                 ActivityF  n percent valid_percent
##  5 of more times per week 11   15.1%         15.3%
##        3-4 times per week 31   42.5%         43.1%
##        1–2 times per week 23   31.5%         31.9%
##       A few times a month  7    9.6%          9.7%
##                      <NA>  1    1.4%             -
freq(mydata, "SocialMediaActivityF")
##    SocialMediaActivityF  n percent
##   Several times per day 63   86.3%
##            Once per day  8   11.0%
##      1–3 times per week  1    1.4%
##     1–3 times per month  1    1.4%
##  Less than once a month  0    0.0%
freq(mydata, "PlatformF")
##  PlatformF  n percent
##  Instagram 50   68.5%
##     TikTok 10   13.7%
##    Youtube  9   12.3%
##   Facebook  2    2.7%
##      Other  2    2.7%
freq(mydata, "PurchaseHabitsF")
##              PurchaseHabitsF  n percent
##        Several times a month  4    5.5%
##                 Once a month 16   21.9%
##             Every few months 31   42.5%
##         Once or twice a year 18   24.7%
##  Less than once a year/never  4    5.5%
freq(mydata, "PurchaseInflF")
##  PurchaseInflF  n percent
##            Yes 47   64.4%
##             No 26   35.6%
freq(mydata, "BrandF")
##        BrandF  n percent valid_percent
##        Adidas  3    4.1%          7.0%
##          Nike  5    6.8%         11.6%
##           SWY 15   20.5%         34.9%
##        Lelosi  0    0.0%          0.0%
##  Under Armour  0    0.0%          0.0%
##      Gymshark  4    5.5%          9.3%
##     Lululemon  0    0.0%          0.0%
##         Craft  1    1.4%          2.3%
##          Aeon  4    5.5%          9.3%
##     Myprotein  6    8.2%         14.0%
##        UniQlo  1    1.4%          2.3%
##      Luactive  2    2.7%          4.7%
##        Prozis  1    1.4%          2.3%
##        Rúngne  1    1.4%          2.3%
##          <NA> 30   41.1%             -
freq(mydata, "InfluencerExposureF")
##           InfluencerExposureF  n percent
##                         Daily 17   23.3%
##          Several times a week 32   43.8%
##                   Once a week 14   19.2%
##    Two to three times a month  5    6.8%
##            About once a month  3    4.1%
##  Less often than once a month  2    2.7%
freq(mydata, "ContentSearchF")
##                ContentSearchF  n percent
##                         Daily  1    1.4%
##          Several times a week 14   19.2%
##                   Once a week  7    9.6%
##    Two to three times a month 16   21.9%
##            About once a month  8   11.0%
##  Less often than once a month 27   37.0%
freq(mydata, "IncomeF")
##               IncomeF  n percent
##         Up to 500 EUR  6    8.2%
##         501–1,000 EUR  7    9.6%
##       1,001–1,500 EUR 25   34.2%
##       1,501–2,000 EUR 20   27.4%
##       2,001–2,500 EUR  9   12.3%
##     2,501 EUR or more  3    4.1%
##  Prefer not to answer  3    4.1%
freq(mydata, "EducationF")
##                            EducationF  n percent
##                        Primary school  1    1.4%
##  Lower or vocational secondary school  2    2.7%
##                       Upper secondary 15   20.5%
##           Higher vocational education 39   53.4%
##                     University degree 16   21.9%
##                          Postgraduate  0    0.0%
freq(mydata, "AreaF")
##     AreaF  n percent
##     Urban 32   43.8%
##  Suburban 21   28.8%
##     Rural 20   27.4%
freq(mydata, "InfluencerSizeF")
##        InfluencerSizeF  n percent
##       Nano Influencers  7    9.6%
##      Mikro Influencers 31   42.5%
##      Makro influencers 20   27.4%
##       Mega influencers 11   15.1%
##  Celebrity influencers  4    5.5%

Descriptive statistics of the six scores

psych::describe(mydata)
##                      vars  n  mean   sd median trimmed  mad   min   max range  skew kurtosis   se
## Q1                      1 73  2.58 0.78   2.00    2.46 0.00  2.00  5.00  3.00  1.05     0.00 0.09
## Q2                      2 73  2.40 0.91   2.00    2.36 1.48  1.00  5.00  4.00  0.36    -0.23 0.11
## Q3                      3 73  1.18 0.51   1.00    1.05 0.00  1.00  4.00  3.00  3.38    12.90 0.06
## Q4                      4 73  1.58 1.00   1.00    1.37 0.00  1.00  5.00  4.00  1.73     2.33 0.12
## Q5                      5 73  3.03 0.96   3.00    3.03 1.48  1.00  5.00  4.00 -0.05    -0.35 0.11
## Q6                      6 73  1.36 0.48   1.00    1.32 0.00  1.00  2.00  1.00  0.59    -1.68 0.06
## Q7                      7 44 19.82 9.81  22.50   20.22 9.64  1.00 35.00 34.00 -0.40    -1.16 1.48
## Q8                      8 43  5.77 3.88   3.00    5.49 2.97  1.00 14.00 13.00  0.50    -1.27 0.59
## Q9                      9 16  5.38 2.53   6.00    5.36 2.22  1.00 10.00  9.00 -0.03    -0.93 0.63
## Q10                    10 43  1.40 0.49   1.00    1.37 0.00  1.00  2.00  1.00  0.41    -1.87 0.08
## Q11                    11 73  2.64 1.03   2.00    2.61 1.48  1.00  5.00  4.00  0.51    -0.38 0.12
## Q12                    12 73  2.33 1.19   2.00    2.17 1.48  1.00  6.00  5.00  1.16     1.16 0.14
## Q13                    13 73  4.33 1.58   4.00    4.42 2.97  1.00  6.00  5.00 -0.35    -1.32 0.19
## Q14a                   14 73  3.71 0.86   4.00    3.75 1.48  1.00  5.00  4.00 -0.47     0.23 0.10
## Q14b                   15 73  3.93 0.80   4.00    3.98 0.00  2.00  5.00  3.00 -0.51    -0.12 0.09
## Q14c                   16 73  3.84 0.80   4.00    3.85 1.48  2.00  5.00  3.00 -0.19    -0.59 0.09
## Q14d                   17 73  3.51 1.06   4.00    3.54 1.48  1.00  5.00  4.00 -0.33    -0.70 0.12
## Q15a                   18 73  3.63 0.96   4.00    3.68 1.48  1.00  5.00  4.00 -0.32    -0.51 0.11
## Q15b                   19 73  3.77 0.94   4.00    3.83 1.48  2.00  5.00  3.00 -0.33    -0.79 0.11
## Q15c                   20 73  3.93 0.80   4.00    3.98 0.00  2.00  5.00  3.00 -0.51    -0.12 0.09
## Q15d                   21 73  3.99 0.95   4.00    4.10 1.48  1.00  5.00  4.00 -1.03     1.06 0.11
## Q16a                   22 73  2.75 1.20   3.00    2.73 1.48  1.00  5.00  4.00  0.19    -1.11 0.14
## Q16b                   23 73  2.34 1.17   2.00    2.25 1.48  1.00  5.00  4.00  0.61    -0.72 0.14
## Q16c                   24 73  2.45 1.27   2.00    2.34 1.48  1.00  5.00  4.00  0.53    -0.85 0.15
## Q16d                   25 73  3.58 1.10   4.00    3.64 1.48  1.00  5.00  4.00 -0.46    -0.59 0.13
## Q17a                   26 73  3.23 1.16   3.00    3.29 1.48  1.00  5.00  4.00 -0.35    -0.75 0.14
## Q17b                   27 73  3.58 1.00   4.00    3.61 1.48  1.00  5.00  4.00 -0.33    -0.68 0.12
## Q17c                   28 73  3.07 1.32   3.00    3.08 1.48  1.00  5.00  4.00 -0.05    -1.12 0.15
## Q17d                   29 73  3.16 1.19   3.00    3.19 1.48  1.00  5.00  4.00 -0.12    -1.03 0.14
## Q18a                   30 73  3.48 0.96   4.00    3.53 1.48  1.00  5.00  4.00 -0.69     0.12 0.11
## Q18b                   31 73  3.25 1.02   3.00    3.25 1.48  1.00  5.00  4.00 -0.27    -0.45 0.12
## Q18c                   32 73  2.88 0.96   3.00    2.86 1.48  1.00  5.00  4.00  0.15    -0.55 0.11
## Q18d                   33 73  3.71 0.99   4.00    3.83 0.00  1.00  5.00  4.00 -1.01     0.98 0.12
## Q19a                   34 73  3.00 1.15   3.00    3.03 1.48  1.00  5.00  4.00 -0.21    -0.97 0.14
## Q19b                   35 73  3.34 0.96   3.00    3.31 1.48  2.00  5.00  3.00  0.12    -1.00 0.11
## Q19c                   36 73  3.60 0.85   4.00    3.61 1.48  2.00  5.00  3.00  0.02    -0.70 0.10
## Q19d                   37 73  3.19 1.10   3.00    3.19 1.48  1.00  5.00  4.00 -0.13    -0.91 0.13
## Q20                    38 73  1.71 0.46   2.00    1.76 0.00  1.00  2.00  1.00 -0.92    -1.17 0.05
## Q21                    39 73  3.92 0.81   4.00    3.97 0.00  1.00  5.00  4.00 -0.77     1.16 0.10
## Q22                    40 73  1.84 0.83   2.00    1.80 1.48  1.00  3.00  2.00  0.31    -1.51 0.10
## Q23                    41 73  3.55 1.39   3.00    3.51 1.48  1.00  7.00  6.00  0.34     0.15 0.16
## ExposureFreq           42 73  4.67 1.19   5.00    4.83 1.48  1.00  6.00  5.00 -1.16     1.16 0.14
## ActiveSearchFreq       43 73  2.67 1.58   3.00    2.58 2.97  1.00  6.00  5.00  0.35    -1.32 0.19
## BirthF                 44 73  1.58 0.78   1.00    1.46 0.00  1.00  4.00  3.00  1.05     0.00 0.09
## ActivityF              45 72  2.36 0.86   2.00    2.33 1.48  1.00  4.00  3.00  0.17    -0.66 0.10
## SocialMediaActivityF   46 73  1.18 0.51   1.00    1.05 0.00  1.00  4.00  3.00  3.38    12.90 0.06
## PlatformF              47 73  1.58 1.00   1.00    1.37 0.00  1.00  5.00  4.00  1.73     2.33 0.12
## PurchaseHabitsF        48 73  3.03 0.96   3.00    3.03 1.48  1.00  5.00  4.00 -0.05    -0.35 0.11
## PurchaseInflF          49 73  1.36 0.48   1.00    1.32 0.00  1.00  2.00  1.00  0.59    -1.68 0.06
## BrandF                 50 43  5.77 3.88   3.00    5.49 2.97  1.00 14.00 13.00  0.50    -1.27 0.59
## InfluencerExposureF    51 73  2.33 1.19   2.00    2.17 1.48  1.00  6.00  5.00  1.16     1.16 0.14
## ContentSearchF         52 73  4.33 1.58   4.00    4.42 2.97  1.00  6.00  5.00 -0.35    -1.32 0.19
## GenderF                53 73  1.71 0.46   2.00    1.76 0.00  1.00  2.00  1.00 -0.92    -1.17 0.05
## EducationF             54 73  3.92 0.81   4.00    3.97 0.00  1.00  5.00  4.00 -0.77     1.16 0.10
## AreaF                  55 73  1.84 0.83   2.00    1.80 1.48  1.00  3.00  2.00  0.31    -1.51 0.10
## InfluencerSizeF        56 73  2.64 1.03   2.00    2.61 1.48  1.00  5.00  4.00  0.51    -0.38 0.12
## IncomeF                57 73  3.55 1.39   3.00    3.51 1.48  1.00  7.00  6.00  0.34     0.15 0.16
## Credibility            58 73  3.75 0.75   3.75    3.75 0.74  2.00  5.00  3.00 -0.01    -0.67 0.09
## Authenticity           59 73  3.83 0.80   4.00    3.87 0.74  1.75  5.00  3.25 -0.38    -0.36 0.09
## Engagement             60 73  2.78 0.96   2.50    2.75 0.74  1.00  4.75  3.75  0.39    -0.78 0.11
## Parasocial             61 73  3.26 0.98   3.50    3.25 1.11  1.00  5.00  4.00  0.04    -0.73 0.11
## Homophily              62 73  3.33 0.82   3.25    3.37 0.74  1.00  5.00  4.00 -0.49     0.44 0.10
## BrandLoyalty           63 73  3.28 0.83   3.25    3.25 1.11  2.00  5.00  3.00  0.24    -0.97 0.10
## StdResid               64 73  0.00 1.01   0.04   -0.01 1.19 -2.25  2.18  4.43  0.10    -0.61 0.12
## CooksD                 65 73  0.02 0.03   0.01    0.01 0.01  0.00  0.12  0.12  2.50     5.35 0.00
## StdFittedValues        66 73  0.00 1.00  -0.09   -0.04 1.06 -1.79  2.10  3.90  0.32    -0.82 0.12

Summary of hypothesis outcomes

Hypothesis Test Outcome
H1 — five predictors jointly predict loyalty Multiple regression (omnibus) Supported (R² = .55, p < .001)
H2 — credibility → loyalty Regression coefficient Supported (p = .015)
H3 — authenticity → loyalty Regression coefficient Not supported (p = .118)
H4 — engagement → loyalty Regression coefficient Supported (p = .003)
H5 — parasocial → loyalty Regression coefficient Not supported at multivariate level (p = .101; strong bivariate)
H6 — homophily mediates parasocial → loyalty Bootstrapped mediation Not supported (substantive null)
H7 — loyalty differs by tier ANOVA + Kruskal–Wallis Not supported (inconclusive; underpowered)