ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

R统计方法整理1.1

2021-02-26 19:00:22  阅读:373  来源: 互联网

标签:1.1 预测 函数 整理 formula data 模型 统计 变量


R函数

平均值,中位值,模式

mean()求平均值

mean(x, trim = 0, na.rm = FALSE, ...)

x是输入向量。
trim用于从排序向量的两端丢弃一些观察结果。
na.rm用于从输入向量中删除缺失值。
median()

x <- c(12,7,3,4.2,18,2,54,-21,8,-5)
直接输出平均值
result <- mean(x)
result.mean <- mean(x)
输出:
print(result.mean)
#直接输出名字也可以输出
result

#修剪,会先排序,然后去掉左右两边最大最小前三名,再求平均值
result.mean <-  mean(x,trim = 0.3)
# 去除NA值  na.rm = TRUE
result.mean <-  mean(x,na.rm = TRUE)

Median( )中位数

median(x, na.rm = FALSE)

x是输入向量。
na.rm用于从输入向量中删除缺失值。

Mode模式

可以包含数字,字符,自定义编写输出出现次数最多的值

# Create the function.
getmode <- function(v) {
   uniqv <- unique(v)
   uniqv[which.max(tabulate(match(v, uniqv)))]
}

# Create the vector with characters.
charv <- c("o","it","the","it","it",1,3,5)

# Calculate the mode using the user function.
result <- getmode(charv)
print(result)

线性回归

回归分析用于建立两个变量之间的关系模型
预测变量X,响应变量Y

y = ax + b

y是响应变量。
x是预测变量。
a和b被称为系数常数。

建立回归的步骤

收集已有的两个变量数据
lm()函数创建关系模型
从创建的模型中找到系数,并用这些创建数学方程
获得关系模型的摘要以了解预测中的平均误差(残差)
预测新值,predict()函数

lm()函数

lm(formula,data)

公式是表示x和y之间的关系的符号。
数据是应用公式的向量。

predict()函数

predict(object, newdata)

object是已使用lm()函数创建的公式。
newdata是包含预测变量的新值的向量。

举例

# The predictor vector.
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)

# The resposne vector.
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)

# Apply the lm() function.
relation <- lm(y~x)

# Find weight of a person with height 170.
a <- data.frame(x = 170)    ???这里用到一个数据框
result <-  predict(relation,a)
print(result)

图形方式可视化回归

# Create the predictor and response variable.
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
relation <- lm(y~x)

# Give the chart file a name.
png(file = "linearregression.png")

# Plot the chart.
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")

# Save the file.
dev.off()

在这里插入图片描述

多重回归

多个预测变量和一个响应变量

y = a + b1x1 + b2x2 +...bnxn

y是响应变量。
a,b1,b2 … bn是系数。
x1,x2,… xn是预测变量。

建立回归的步骤

1.使用R语言中的lm()函数创建回归模型。

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

公式是表示响应变量和预测变量之间的关系的符号。
数据是应用公式的向量。

2.模型使用输入数据确定系数的值。

input <- mtcars[,c("mpg","disp","hp","wt")]
print(head(input))

在这里插入图片描述

3.预测给定的一组预测变量的响应变量的值。

建立Y=“mpg”与X=“disp”,“hp”和“wt”作为预测变量之间的关系。

#输入数据
input <- mtcars[,c("mpg","disp","hp","wt")]

# Create the relationship model.创建回归模型
model <- lm(mpg~disp+hp+wt, data = input)

# Show the model.
print(model)

# Get the Intercept and coefficients as vector elements.
cat("# # # # The Coefficient Values # # # ","
")
# 计算常量a的值
a <- coef(model)[1]
print(a)

# 计算出各个因子的系数值
Xdisp <- coef(model)[2]
Xhp <- coef(model)[3]
Xwt <- coef(model)[4]

print(Xdisp)
print(Xhp)
print(Xwt)

在这里插入图片描述

逻辑回归

响应变量(因变量)具有诸如True / False或0/1的分类值。

y = 1/(1+e^-(a+b1x1+b2x2+b3x3+...))

y是响应变量。
x是预测变量。
a和b是作为数字常数的系数。

所用函数

glm(,,family = binomial)

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))

产生如下结果:
在这里插入图片描述

标准分布

链接
正态分布----50%的值位于平均值的左侧,另外50%位于图表的右侧

涉及函数

dnorm(x, mean, sd) x是数字的向量。
pnorm(x, mean, sd) x是数字的向量。
qnorm(p, mean, sd) p是概率的向量。
rnorm(n, mean, sd) n是观察的数量(样本大小)。

mean是样本数据的平均值。 它的默认值为零。
sd是标准偏差。 它的默认值为1。

dnorm()

给出给定平均值和标准偏差在每个点的概率分布的高度。

pnorm()

给出正态分布随机数的概率小于给定数的值。 “累积分布函数”。

qnorm()

概率值,并给出累积值与概率值匹配的数字。

rnorm()

用于生成分布正常的随机数。 它将样本大小作为输入,并生成许多随机数。

二项分布

涉及函数

dbinom(x, size, prob) x是数字的向量。
pbinom(x, size, prob) x是数字的向量。
qbinom(p, size, prob) p是概率向量。
rbinom(n, size, prob) n是观察的数量。
size是试验的数量。
prob是每个试验成功的概率。

dbinom()

给出每个点的概率密度分布。

pbinom()

给出事件的累积概率。 它是表示概率的单个值

qbinom()

采用概率值,并给出累积值与概率值匹配的数字。

rbinom()

从给定样本产生给定概率的所需数量的随机值。

泊松回归

响应变量是计数,遵循泊松分布

log(y) = a + b1x1 + b2x2 + bnxn.....
​y​是响应变量。
​a​和​b​是数字系数。
​x​是预测变量

涉及函数-glm(,,​family=poisson)

glm(formula,data,family)
​formula​是表示变量之间的关系的符号。
​data​是给出这些变量的值的数据集。
​family​是 R 语言对象来指定模型的细节。 它的值是“泊松”的逻辑回归。

协方差分析

分类变量与预测变量一起使用并比较分类变量的每个级别的回归线来研究分类变量的效果。 这样的分析被称为协方差分析,也称为ANCOVA。

涉及函数

aov()

anova()

创建协方差分析模型

有分类变量和预测变量之间相互作用的模型

取“mpg”作为响应变量,“hp”作为预测变量,“am”作为分类变量。
mpg=hp+am 考虑“am”和“hp”之间的相互作用。

# Get the dataset.
input <- mtcars

# Create the regression model.
result <- aov(mpg~hp*am,data = input)
print(summary(result))

无分类变量和预测变量之间相互作用的模型

# Get the dataset.
input <- mtcars

# Create the regression model.
result <- aov(mpg~hp+am,data = input)
print(summary(result))

两个模型的比较

使用**anova()**函数。

# Get the dataset.
input <- mtcars

# Create the regression models.
result1 <- aov(mpg~hp*am,data = input)
result2 <- aov(mpg~hp+am,data = input)

# Compare the two models.
print(anova(result1,result2))

时间序列分析

主要目的是根据已有数据对未来进行预测。
一个稳定的时间序列中常常包含两个部分,有规律的时间序列+噪声。
以下方法主要的目的就是去过滤噪声值。

涉及函数—ts()

timeseries.object.name <-  ts(data, start, end, frequency)
data是包含在时间序列中使用的值的向量或矩阵。(必选)
start以时间序列指定第一次观察的开始时间。(可选)
end指定时间序列中最后一次观测的结束时间。(可选)
frequency指定每单位时间的观测数。(可选)

不同的时间间隔

ts()函数中的频率参数值决定了测量数据点的时间间隔。 值为12表示时间序列为12个月。 其他值及其含义如下 - 
频率= 12指定一年中每个月的数据点。
频率= 4每年的每个季度的数据点。
频率= 6每小时的10分钟的数据点。
频率= 24 * 6将一天的每10分钟的数据点固定。

时间序列的预处理:

1.平稳性检验
2.白噪声检验
3.平稳时间序列的参数特点

时间序列建模步骤

1.拿到被分析的时间序列数据集
2.对数据绘图,观测其平稳性。
3.对得到的平稳时间序列分别求得其自相关系数 ACF 和偏自相关系数 PACF ,通过对自相关图和偏自相关图的分析,得到最佳的阶层 p 和阶数 q。由以上得到的 d、q、p ,得到 ARIMA 模型。
4.模型诊断。进行诊断分析,以证实所得模型确实与所观察到的数据特征相符。若不相符,重新回到第3步。

#从2012年1月开始的一个地方的年降雨量细节。创建一个R时间序列对象为期12个月并绘制它。
# Get the data points in form of a R vector.
rainfall <- c(799,1174.8,865.1,1334.6,635.4,918.5,685.5,998.6,784.2,985,882.8,1071)

# Convert it to a time series object.
rainfall.timeseries <- 
ts(rainfall,start = c(2012,1),frequency = 12)

# Print the timeseries data.
print(rainfall.timeseries)

# Give the chart file a name.
png(file = "rainfall.png")

# Plot a graph of the time series.
plot(rainfall.timeseries)

# Save the file.
dev.off()

多时间序列图

在这里插入图片描述

非线性最小二乘

涉及函数—nls()

创建非线性最小二乘测试的基本语法是 :

nls(formula, data, start)
formula是包括变量和参数的非线性模型公式。
data是用于计算公式中变量的数据框。
start是起始估计的命名列表或命名数字向量。

建模步骤

1.考虑一个假设其系数的初始值的非线性模型。
2.将看到这些假设值的置信区间是什么,以便判断这些值在模型中有多好。
假设方程a = b1*x^2+b2,初始系数为1和3,并将这些值拟合到nls()函数中

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)

# Give the chart file a name.
png(file = "nls.png")


# Plot these values.
plot(xvalues,yvalues)


# Take the assumed values and fit into the model.
model <- nls(yvalues ~ b1*xvalues^2+b2,start = list(b1 = 1,b2 = 3))

# Plot the chart with new data by fitting it to a prediction from 100 data points.
new.data <- data.frame(xvalues = seq(min(xvalues),max(xvalues),len = 100))
lines(new.data$xvalues,predict(model,newdata = new.data))

# Save the file.
dev.off()

# Get the sum of the squared residuals.
print(sum(resid(model)^2))

# Get the confidence intervals on the chosen values of the coefficients.
print(confint(model))

在这里插入图片描述

决策树

决策树是以树的形式表示选择及其结果的图。图中的节点表示事件或选择,并且图的边缘表示决策规则或条件。它主要用于使用R的机器学习和数据挖掘应用程序。
决策树的使用的例子是 - 预测电子邮件是垃圾邮件或非垃圾邮件,预测肿瘤癌变,或者基于这些因素预测贷款的信用风险。通常,使用观测数据(也称为训练数据)来创建模型。然后使用一组验证数据来验证和改进模型。 R具有用于创建和可视化决策树的包。对于新的预测变量集合,我们使用此模型来确定R包“party”用于创建决策树。

install.packages("party")

语法

ctree(formula, data)

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

涉及函数

ctree() 创建决策树并查看其图形

随机森林算法

install.packages("randomForest)

语法

randomForest(formula, data)
formula是描述预测变量和响应变量的公式。
data是所使用的数据集的名称。

涉及函数

randomForest()来创建决策树并查看它的图。

生存分析

install.packages("survival")

语法

Surv(time,event)
survfit(formula)
time是直到事件发生的跟踪时间。
event指示预期事件的发生的状态。
formula是预测变量之间的关系。

涉及函数

Surv()创建一个将显示趋势图。

survfit()

卡方检验

卡方检验是一种确定两个分类变量之间是否存在显着相关性的统计方法。 这两个变量应该来自相同的人口,他们应该是类似 - 是/否,男/女,红/绿等。
例如,我们可以建立一个观察人们的冰淇淋购买模式的数据集,并尝试将一个人的性别与他们喜欢的冰淇淋的味道相关联。 如果发现相关性,我们可以通过了解访问的人的性别的数量来计划适当的味道库存。

语法

chisq.test(data)

标签:1.1,预测,函数,整理,formula,data,模型,统计,变量
来源: https://blog.csdn.net/weixin_43810584/article/details/114127846

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有