R语言

R语言--统计(六)

2018-11-30  本文已影响10人  _凌浩雨
1. 平均值、中位数和模式

示例:

# 创建向量
x <- c(12, 7, 3, 4.2, 18, 2, 54, -21, 8, -5)
# 执行
result.mean <- mean(x)
print(result.mean)

打印结果:


图1.png

II. 修剪选项

# 创建向量
x <- c(12, 7, 3, 4.2, 18, 2, 54, -21, 8, -5)
# 执行
result.mean <- mean(x)
print(result.mean)
# 修剪选项
result.mean <- mean(x, trim = 0.3)
print(result.mean)

打印结果:


图2.png

III. NA选项

# NA选项--如果有缺失值,则平均函数返回NA
x <- c(12, 7, 3, 4.2, 18, 2, 54, -21, 8, -5, NA)
result.mean <- mean(x)
print(result.mean)

result.mean <- mean(x, na.rm = TRUE)
print(result.mean)

打印结果:


图3.png

II. 示例

# 创建向量
x <- c(12, 7, 3, 4.2, 18, 2, 54, -21, 8, -5)
# 查找中位数
median.result <- median(x)
print(median.result)

打印结果:


图4.png
# 创建函数
getmode <- function(v) {
    uniqv <- unique(v)
    uniqv[which.max(tabulate(match(v, uniqv)))]
}
# 创建向量
v <- c(2, 1, 2, 3, 1, 2, 3, 4, 1, 5, 5, 3, 2, 3)
# 计算模式
result <- getmode(v)
print(result)

# 创建字符向量
charv <- c("o", "it", "the", "it", "it")
# 获取模式
result <- getmode(charv)
print(result)

打印结果:


图5.png
2. 线性回归
y = ax + b

以下是所使用的参数的描述 -
-- y是响应变量。
-- x是预测变量。
-- ab被称为系数常数。

1. 进行收集高度和相应重量的观测值的样本的实验。
2. 使用R语言中的lm()函数创建关系模型。
3. 从创建的模型中找到系数,并使用这些创建数学方程
4. 获得关系模型的摘要以了解预测中的平均误差。 也称为残差。
5. 为了预测新人的体重,使用R中的predict()函数。
lm(formula,data)

以下是所使用的参数的说明 -
-- 公式是表示xy之间的关系的符号。
-- 数据是应用公式的向量。

# 创建关系模型并获取系数
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
# 应用lm()函数
relation <- lm(y~x)
print(relation)

打印结果:


图6.png

其中a=0.6746, b=-38.4551

# 获取相关摘要
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
# 应用lm()函数
relation <- lm(y~x)
print(summary(relation))

打印结果:


图7.png
# 预测新人体重
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
# 应用lm()函数
relation <- lm(y~x)
# 身高170,预测体重
a <- data.frame(x = 170)
result <- predict(relation, a)
print(result)

打印结果:


图8.png
# 图形方式可视化回归
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
# 应用lm()函数
relation <- lm(y~x)
# 设置文件名
png(file = "linearregression.png")
# 绘制图表
# 绘制点
plot(y, x, col = "blue", main = "Height & Weight Regression")
# 绘制线
abline(lm(x~y), cex = 1.3, pch = 16, xlab = "Weight in Kg", ylab = "Height in cm")

# 保存文件
dev.off()

效果:


linearregression.png
3. 多重回归
y = a + b1x1 + b2x2 +...bnxn

以下是所使用的参数的描述 -
-- y是响应变量。
-- a,b1,b2 ... bn是系数。
-- x1,x2,... xn是预测变量。

lm(y ~ x1+x2+x3...,data)

以下是所使用的参数的描述 -
-- 公式是表示响应变量和预测变量之间的关系的符号。
-- 数据是应用公式的向量。

# 创建模型并获取系数
input <- mtcars[,c("mpg", "disp", "hp", "wt")]
# 创建关系模型
model <- lm(mpg~disp+hp+wt, data = input)
# 显示模型
print(model)
# 打印系数
cat("# # # # The Coefficient Values # # # ","
")
# 打印系数
a <- coef(model)[1]
print(a)
Xdisp <- coef(model)[2]
Xhp <- coef(model)[3]
Xwt <- coef(model)[4]
print(Xdisp)
print(Xhp)
print(Xwt)

打印结果:


图9.png
4. 逻辑回归
y = 1/(1+e^-(a+b1x1+b2x2+b3x3+...))

以下是所使用的参数的描述 -
-- y是响应变量。
-- x是预测变量。
-- a和b是作为数字常数的系数。
用于创建回归模型的函数是glm()函数。

glm(formula,data,family)

以下是所使用的参数的描述 -
-- formula是表示变量之间的关系的符号。
-- data是给出这些变量的值的数据集。
-- family是R语言对象来指定模型的细节。 它的值是二项逻辑回归。

# 创建回归模型
input <- mtcars[,c("am", "cyl", "hp", "wt")]
am.data = glm(formula = am ~ cyl + hp + wt, data = input, family = binomial)
print(summary(am.data))

打印结果:


图10.png
5. 标准分布
dnorm(x, mean, sd)
pnorm(x, mean, sd)
qnorm(p, mean, sd)
rnorm(n, mean, sd)

以下是在上述功能中使用的参数的描述 -
-- x是数字的向量。
-- p是概率的向量。
-- n是观察的数量(样本大小)。
-- mean是样本数据的平均值。 它的默认值为零。
-- sd是标准偏差。 它的默认值为1。

# dnorm() - 该函数给出给定平均值和标准偏差在每个点的概率分布的高度。
x <- seq(-10, 10, .1)
y <- dnorm(x, mean = 2.5, sd = 0.5)
# 设置文件名
png(file = "dnorm.png")
# 绘制点
plot(x,y)
dev.off()

效果:


dnorm.png
# pnorm() - 该函数给出正态分布随机数的概率小于给定数的值。 它也被称为“累积分布函数”。
x <- seq(-10, 10, .2)
y <- pnorm(x, mean = 2.5, sd = 2)
# 设置文件名
png(file = "pnorm.png")
# 绘制点
plot(x, y)
dev.off()

效果:


pnorm.png
# qnorm() - 该函数采用概率值,并给出累积值与概率值匹配的数字。
x <- seq(0, 1, by = 0.02)
y <- qnorm(x, mean = 2, sd = 1)
# 设置文件名
png(file = "qnorm.png")
plot(x, y)
dev.off()

效果:


qnorm.png
# rnorm() - 此函数用于生成分布正常的随机数。 它将样本大小作为输入,并生成许多随机数。 我们绘制一个直方图来显示生成的数字的分布。
y = rnorm(50)
png(file = "rnorm.png")
hist(y, main = "Normal Distribution")
dev.off()

效果:


rnorm.png
6. 二项分布
dbinom(x, size, prob)
pbinom(x, size, prob)
qbinom(p, size, prob)
rbinom(n, size, prob)

以下是所使用的参数的描述 -
-- x是数字的向量。
-- p是概率向量。
-- n是观察的数量。
-- size是试验的数量。
-- prob是每个试验成功的概率。

x = seq(0, 50, 1)
y = dbinom(x, 50, 0.5)
png(file = "dbinom.png")
plot(x, y)
dev.off()

效果:


dbinom.png
# pbinom() - 此函数给出事件的累积概率。 它是表示概率的单个值。
x <- pbinom(26, 51, 0.5)
print(x)

打印结果:


图11.png
# qbinom() - 该函数采用概率值,并给出累积值与概率值匹配的数字。
x <- qbinom(0.25, 51, 1/2)
print(x)

打印结果:


图12.png
# rbinom() - 该函数从给定样本产生给定概率的所需数量的随机值。
x <- rbinom(8, 150, .4)
print(x)

打印结果:


图13.png
7. 泊松分布
log(y) = a + b1x1 + b2x2 + bnxn.....

以下是所使用的参数的描述 -

glm(formula,data,family)

以下是在上述功能中使用的参数的描述 -
-- formula是表示变量之间的关系的符号。
-- data是给出这些变量的值的数据集。
-- family是R语言对象来指定模型的细节。 它的值是“泊松”的逻辑回归。

# 创建回归模型
# 内置的数据集“warpbreaks”
output <- glm(formula = breaks ~ wool + tension,
        data = warpbreaks,
        family = poisson
    )
print(summary(output))

打印结果:


图14.png
8. 协方差分析
# 模型与分类变量和预测变量之间的相互作用
result <- aov(mpg~hp*am, data = mtcars)
print(summary(result))

打印结果:


图15.png
# 没有分类变量和预测变量之间相互作用的模型
result <- aov(mpg~hp+am, data = mtcars)
print(summary(result))

打印结果:


图16.png
# 比较两个模型
input <- mtcars
result1 <- aov(mpg~hp*am, data = input)
result2 <- aov(mpg~hp+am, data = input)
# 比较两个模型
print(anova(result1, result2))

打印结果:


图17.png
9. 时间序列分析
timeseries.object.name <-  ts(data, start, end, frequency)

以下是所使用的参数的描述 -
-- data是包含在时间序列中使用的值的向量或矩阵。
-- start以时间序列指定第一次观察的开始时间。
-- end指定时间序列中最后一次观测的结束时间。
-- frequency指定每单位时间的观测数。
除了参数“data”,所有其他参数是可选的。

# 单时间序列
rainfall <- c(799,1174.8,865.1,1334.6,635.4,918.5,685.5,998.6,784.2,985,882.8,1071)
# 转换为时间序列对象
rainfall.timeseries <- ts(rainfall, start = c(2012, 1), frequency = 12)
print(rainfall.timeseries)
# 设置图片
png(file = "rainfall.png")
# 绘图
plot(rainfall.timeseries)
# 保存图片
dev.off()

打印结果:


图18.png

效果:


rainfall.png
# 多时间序列
rainfall1 <- c(799,1174.8,865.1,1334.6,635.4,918.5,685.5,998.6,784.2,985,882.8,1071)
rainfall2 <- c(655,1306.9,1323.4,1172.2,562.2,824,822.4,1265.5,799.6,1105.6,1106.7,1337.8)
# 转换为矩阵
combined.rainfall <- matrix(c(rainfall1, rainfall2), nrow = 12)
# 转换为时间序列
rainfall.timeseries <- ts(combined.rainfall, start = c(2012, 1), frequency = 12)
print(rainfall.timeseries)
# 设置文件名
png(file = "rainfall_combined.png")
# 绘制点
plot(rainfall.timeseries, main = "Multiple Time Series")
# 保存文件
dev.off()

打印结果:


图19.png

效果:


rainfall_combined.png
10. 非线性最小二乘
nls(formula, data, start)

以下是所使用的参数的描述 -
-- formula是包括变量和参数的非线性模型公式。
-- data是用于计算公式中变量的数据框。
-- start是起始估计的命名列表或命名数字向量。

# 非线性最小二乘法
xvalues <- c(1.6,2.1,2,2.23,3.71,3.25,3.4,3.86,1.19,2.21)
yvalues <- c(5.19,7.43,6.94,8.11,18.75,14.88,16.06,19.12,3.21,7.58)
# 设置图片
png(file = "nls.png")
# 绘图
plot(xvalues, yvalues)
# 取假设值并适合模型。
model <- nls(yvalues ~ b1 * xvalues^2 + b2, start = list(b1 = 1, b2 = 3))
# 绘制图表
new.data <- data.frame(xvalues = seq(min(xvalues), max(xvalues), len = 100))
lines(new.data$xvalues, predict(model, newdata = new.data))
# 保存文件
dev.off()
# 获取model平法和
print(sum(resid(model)^2))
# 获得所选系数值的置信区间。
print(confint(model))

打印结果:


图20.png

效果图:


nls.png
11. 决策树
# 安装包 -- party包中用于创建和分析决策树的函数ctree()
install.packages("party", repos="https://cran.cnr.berkeley.edu/")
ctree(formula, data)

以下是所使用的参数的描述 -
-- formula是描述预测变量和响应变量的公式。
-- data是所使用的数据集的名称。

# 创建决策树
library(party)
# 创建输入数据帧
input.data <- readingSkills[c(1:105),]
# 设置文件名
png(file = "decision_tree.png")
# 创建树
output.tree <- ctree(
        nativeSpeaker ~ age + shoeSize + score,
        data = input.data
    )
# 绘图
plot(output.tree)
# 保存文件
dev.off()

打印结果:


图21.png

效果:


decision_tree.png
12. 随机森林算法
# 安装包 -- randomForest具有函数randomForest(),用于创建和分析随机森林。
install.packages("randomForest", repos="https://cran.cnr.berkeley.edu/")
randomForest(formula, data)

以下是所使用的参数的描述 -
formula是描述预测变量和响应变量的公式。
data是所使用的数据集的名称。

library(party)
library(randomForest)

# 创建森林
output.forest <- randomForest(nativeSpeaker ~ age + shoeSize + score, data = readingSkills)
print(output.forest)
print(importance(output.forest, type = 2))

打印结果:


图22.png
13. 生存分析
Surv(time,event)
survfit(formula)

以下是所使用的参数的描述 -
-- time是直到事件发生的跟踪时间。
-- event指示预期事件的发生的状态。
-- formula是预测变量之间的关系。

# 应用函数
library("survival")
# 创建生存对象
survfit(Surv(pbc$time, pbc$status == 2) ~ 1)
# 设置文件名
png(file = "survival.png")
# 绘制图
plot(survfit(Surv(pbc$time, pbc$status == 2) ~ 1))
# 保存
dev.off()

打印结果:


图23.png

效果图:


survival.png
14. 卡方检验
chisq.test(data)

以下是所使用的参数的描述 -
-- data是以包含观察中变量的计数值的表的形式的数据。

# 卡方检验
library("MASS")
# 创建数据帧
car.data <- data.frame(Cars93$AirBags, Cars93$Type)
# 创建表
car.data = table(Cars93$AirBags, Cars93$Type)
print(car.data)
# 卡方校验
print(chisq.test(car.data))

打印结果:


图24.png

代码下载

上一篇下一篇

猜你喜欢

热点阅读