## Comparing Two Sample Means in R

One can easily compare two sample means in R, as in R language all the classical tests are available in the package stats. There are different comparison tests such as (i) one sample mean test, (ii) two independent sample means test, and (iii) dependent sample test. When population standard deviation is known, or sample size (number of observations in the sample) is large enough ($n\ge 30), tests related to normal distribution are performed. ### Data for Two Sample Means Consider the following data set on the “latent heat of the fusion of ice (cal/gm)” from Rice, 1995. Let us draw boxplots to make a comparison between two these two methods. The comparison will help in checking the assumption of the independent two-sample test. Note that one can read the data using the scan() function, create vectors, or even read the above data from data files such as *.txt and *.csv. In this tutorial, we assume vectors$A$and$B$for method A and method B. A = c(79.98, 80.04, 80.02, 80.04, 80.03, 80.03, 80.04, 79.97, 80.05, 80.03, 80.02, 80.00, 80.02) B = c(80.02, 79.94, 79.98, 79.97, 79.97, 80.03, 79.95, 79.97) ### Draw a Boxplot of Samples Let us draw boxplots for each method that indicate the first group tends to give higher results than the second one. boxplot(A, B) ### Comparing Two Sample Means in R using t.test() Function The unpaired t-test (independent two-sample test) for the equality of the means can be done using the function t.test() in R Language. t.test(A, B) From the results above, one can see that the p-value = 0.006939 is less than 0.05 (level of significance) which means that on average both methods are statistically different from each other with reference to latent heat of fusion of ice. ### Testing the Equality of Variances of Samples Note that, the R language does not assume the equality of variances in the two samples. However, the F-test can be used to check/test the equality in the variances, provided that the two samples are from normal populations. var.test(A, B) From the above results, there is no evidence that the variances of both samples are statistically significant, as the p-value is greater than the 0.05 level of significance. It means that one can use the classical t-test that assumes the equality of the variances. t.test(A, B, var.equa. = TRUE) ## Output Welch Two Sample t-test data: A and B t = 3.2499, df = 12.027, p-value = 0.006939 alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: 0.01385526 0.07018320 sample estimates: mean of x mean of y 80.02077 79.97875  https://rfaqs.com https://gmstat.com ## Statistical Power Analysis in R: A Comprehensive Guide ### Introduction to Power Analysis The post is about statistical power analysis in R. First, define the meaning of power in statistics. The power is the probability ($1-\beta$) of detecting an effect given that the effect is here. Power is the probability of correctly rejecting the null hypothesis when it is false. Suppose, a simple study of a drug-A and a placebo. Let the drug be truly effective. The power is the probability of finding a difference between two groups (drug-A and placebo group). Imagine that a power of$1-\beta=0.8$(having a power of 0.8 means that 80% of the time, there will be statistically significant differences between the drug-A and the placebo group, whereas there are 20% of the time, the statistically significant effect will not be obtained between two groups). Also, note that this study was conducted many times. Therefore, the probability of a Type-II error is$\beta=0.2$. ### One-Sample Power The following plot is for a one-sample one-tailed greater than t-test. In the graph below, let the null hypothesis$H_0:\mu = \mu_0$be true, and the test statistic$t$follows the null distribution indicated by the hashed area. Under the specific alternative hypothesis,$H_1:\mu = \mu_1$, the test statistic$t$follows the distribution shown by solid area. The$\alpha$is the probability of making a type-I error (that is rejecting$H_0$when it is true), and the “crit. Val” is the location of the$t_{crit}$value associated with$H_0$on the scale of the data. The rejection region is the area under$H_0$at least as far as$crit. val.” is from $\mu_0$.

The test’s power ($1-\beta$) is the green area, the area under $H_1$ in the rejection region. A type-II error is made when $H_1$ is true, but we fail to reject $H_0$ in the red region.

### Type-II Error and Power Analysis in R

#One Sample Power

x <- seq(-4, 4, length = 1000)
hx <- dnorm(x, mean = 0, sd = 1)

plot(x, hx, type = "n", xlim = c(-4, 8), ylim = c(0, 0.5),
main = expression (paste("Type-II Error (", beta, ") and Power (", 1 - beta, ")")),
axes = FALSE)

# one-tailed shift
shift = qnorm (1 - 0.05, mean=0, sd = 1 )*1.7
xfit2 = x + shift
yfit2 = dnorm(xfit2, mean=shift, sd = 1 )

axis (1, at = c(-qnorm(0.05), 0, shift), labels = expression("crit. val.", mu[0], mu[1]))
axis(1, at = c(-4, 4 + shift), labels = expression(-infinity, infinity),
lwd = 1, lwd.tick = FALSE)

# The alternative hypothesis area
# the red - underpowered area

lb <- min(xfit2)               # lower bound
ub <- round(qnorm(0.95), 2)    # upper bound
col1 = "#CC2222"

i <- xfit2 >= lb & xfit2 <= ub
polygon(c(lb, xfit2[i], ub), c(0, yfit2[i],0), col = col1)

# The green area where the power is
col2 = "#22CC22"
i <- xfit2 >= ub
polygon(c(ub, xfit2[i], max(xfit2)), c(0, yfit2[i], 0), col = col2)

# Outline the alternative hypothesis
lines(xfit2, yfit2, lwd = 2)

# Print null hypothesis area
col_null = "#AAAAAA"
polygon (c(min(x), x, max(x)), c(0, hx, 0), col = col_null,
lwd = 2, density = c(10, 40), angle = -45, border = 0)

lines(x, hx, lwd = 2, lty = "dashed", col=col_null)

axis(1, at = (c(ub, max(xfit2))), labels = c("", expression(infinity)), col = col2,
lwd = 1, lwd.tick = FALSE)

#Legend
legend("topright", inset = 0.015, title = "Color",
c("Null Hypothesis", "Type-II error", "Power"), fill = c(col_null, col1, col2),
angle = -45, density = c(20, 1000, 1000), horiz = FALSE)

abline(v=ub, lwd=2, col="#000088", lty = "dashed")
arrows(ub, 0.45, ub+1, 0.45, lwd=3, col="#008800")
arrows(ub, 0.45, ub-1, 0.45, lwd=3, col="#880000")

Online Quiz Website

Statistics and Data Analysis

## Descriptive Summary in R

### Introduction to Descriptive Summary in R

Statistics is a study of data: describing properties of data (descriptive statistics) and drawing conclusions about a population based on information in a sample (inferential statistics). In this article, we will discuss the computation of descriptive summary in R (Descriptive statistics in R Programming).

Example: Twenty elementary school children were asked if they live with both parents (B), father only (F), mother only (M), or someone else (S) and how many brothers has he. The responses of the children are as follows:

Consider the following computation is required. These computations are related to the Descriptive summary in R.

• Construct a frequency distribution table in r relative to the case of each one.
• Draw a bar and pie graphs of the frequency distribution for each category using the R code.

### Creating the Frequency Table in R

# Enter the data in the vector form
x <- c("M", "B", "B", "M", "F", "S", "B", "M", "F", "B", "B", "F", "B", "M", "M", "B", "B", "F", "B", "M")

# Creating the frequency table use Table command
tabx=table(x) ; tabx

# Output
x
B F M S
9 4 6 1 

### Draw a Bar Chart and Pie Chart from the Frequency Table

# Drawing the bar chart for the resulting table in Green color with main title, x label and y label

barplot(tabx, xlab = "x", ylab = "Frequency", main = "Sample of Twenty elementary school children ",col = "Green")

# Drawing the pie chart for the resulting table with main title.
pie(tabx, main = "Sample of Twenty elementary school children ")

### Descriptive Statistics for Air Quality Data

Consider the air quality data for computing numerical and graphical descriptive summary in R. The air quality data already exists in the R Datasets package.

attach(airquality)
# To choose the temperature degree only
Temperature = airquality[, 4]
hist(Temperature)

hist(Temperature, main="Maximum daily temperature at La Guardia Airport", xlab="Temperature in degrees Fahrenheit", xlim = c(50, 100), col="darkmagenta", freq=T)

h <- hist(Temperature, ylim = c(0,40))
text(h$mids, h$counts, labels=h$counts, adj=c(0.5, -0.5)) In the above histogram, the frequency of each bar is drawn at the top of each bar by using the text() function. Note that to change the number of classes or the interval, we should use the sequence function to divide the$range$,$Max$, and$Min$, into$n$using the function length.out=n+1 hist(Temperature, breaks = seq(min(Temperature), max(Temperature), length.out = 7)) ### Median for Ungrouped Data Numeric descriptive statistics such as median, mean, mode, and other summary statistics can be computed. median(Temperature) ## Output 79 mean(Temperature) summary(Temperature) A customized function for the computation of the median can be created. For example arithmetic.median <- function(xx){ modulo <- length(xx) %% 2 if (modulo == 0){ (sort(xx)[ceiling(length(xx)/2)] + sort(xx)[ceiling(1+length(xx)/2)])/2 } else{ sort(xx)[ceiling(length(xx)/2)] } } arithmetic.median(Temperature) ### Computing Quartiles and IQR The quantiles (Quartiles, Deciles, and Percentiles) can be computed using the function quantile() in R. The interquartile range (IQR) can also be computed using the iqr() function. y = airquality[, 4] # temperature variable quantile(y) quantile(y, probs = c(0.25,0.5,0.75)) quantile(y, probs = c(0.30,0.50,0.70,0.90)) IQR(y) One can create a custom function for the computation of Quartiles and IQR. For example, quart<- function(x) { x <- sort(x) n <- length(x) m <- (n+1)/2 if (floor(m) != m) { l <- m-1/2; u <- m+1/2 } else { l <- m-1; u <- m+1 } c(Q1 = median(x[1:l]), Q3 = median(x[u:n]), IQR = median(x[u:n])-median(x[1:l])) } quart(y) ### FAQs in R Language 1. How one can perform descriptive statistics in R Language? 2. Discuss the strategy of creating a frequency table in R. 3. How Pie Charts and Bar Charts can be drawn in R Language? Discuss the commands and important arguments. 4. What default function is used to compute the quartiles of a data set? 5. You are interested in computing the median for group and ungroup data in R. Write a customized R function. 6. Create a User-Defined function that can compute, Quaritles and IQR of the inputted data set. https://itfeature.com https://gmstat.com ## Shapiro-Wilk Test in R (2024) One should check/test the assumption of normality before performing a statistical test that requires the assumption of normality. In this article, we will discuss the Shapiro-Wilk Test in R (one sample t-test). The hypothesis is$H_0$: The data are normally distributed$H_1$: The data are not normally distributed ### Performing Shapiro-Wilk Test in R To check the normality using the Shapiro-Wilk test in R, we will use a built-in data set of mtcars. attach(mtcars) shapiro.test(mpg) The results indicate that the$mpg$variable is statistically normal as the p-value from the Shapiro-Wilk Test is much greater than the 0.05 level of significance. • By looking at the p-value, one can determine whether to reject or accept the null hypothesis of normality: • If the p-value is less than the chosen significance level (e.g., 0.05), reject the null hypothesis and conclude that the data is likely not normally distributed. • If the p-value is greater than the chosen significance level, one failed to reject the null hypothesis, suggesting the data might be normal (but it does not necessarily confirm normality). The normality can be visualized using a QQ plot. # QQ Plot from Base Package qqnorm(mpg, pch = 1, fram = F) qqline(mpg, col="red", lwd = 2)  From the QQ plot of the base package, it can be seen that there are a few points due to which$mpg$variable is not normally distributed. # QQ plot from car Package library(car) qqPlot(mpg) From the QQ plot (with confidence interval band), one can observe that the$mpg\$ variable is approximately normally distributed.

Note that

• The Shapiro-Wilk test is generally more powerful than other normality tests like the Kolmogorov-Smirnov test for smaller sample sizes (typically less than 5000).
• It is important to visually inspect the data using a histogram or Q-Q plot to complement the Shapiro-Wilk test results for a more comprehensive assessment of normality.

https://itfeature.com