R语言杂七杂八的笔记

编程入门 行业动态 更新时间:2024-10-24 09:28:16

R<a href=https://www.elefans.com/category/jswz/34/1770116.html style=语言杂七杂八的笔记"/>

R语言杂七杂八的笔记

    1、决策树(Decision Tree):是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。(即分类的属性均在数据表中,不能决策出不存在的属性)

    2、set.seed()函数

set.seed()用于设定随机数种子,一个特定的种子可以产生一个特定的伪随机序列,这个函数的主要目的,是让你的模拟能够可重复出现,因为很多时候我们需要取随机数,但这段代码再跑一次的时候,结果就不一样了,如果需要重复出现同样的模拟结果的话,就可以用set.seed()。在调试程序或者做展示的时候,结果的可重复性是很重要的,所以随机数种子也就很有必要。 也可以简单地理解为括号里的数只是一个编号而已,例如set.seed(100)不应将括号里的数字理解成“一百”,而是应该理解成“编号为一零零的随机数发生”,下一次再模拟可以采用二零零(200)或者一一一(111)等不同的编号即可,编号设定基本可以随意。 
例如以下实验:

x<-rnorm(10) #随机生成10个随机数 
x 
[1] 0.3897943 -1.2080762 -0.3636760 -1.6266727 -0.2564784 1.1017795 0.7557815 
[8] -0.2382336 0.9874447 0.7413901 
x<-rnorm(10) #再次随机生成10个随机数 
x 
[1] 0.08934727 -0.95494386 -0.19515038 0.92552126 0.48297852 -0.59631064 -2.18528684 
[8] -0.67486594 -2.11906119 -1.26519802 
set.seed(5) #设定种子 
x<-rnorm(10) # 在设定种子的前提下生成10个随机数 
x 
[1] -0.84085548 1.38435934 -1.25549186 0.07014277 1.71144087 -0.60290798 -0.47216639 
[8] -0.63537131 -0.28577363 0.13810822 
set.seed(5) # 设定种子 
y<-rnorm(10) 
y 
[1] -0.84085548 1.38435934 -1.25549186 0.07014277 1.71144087 -0.60290798 -0.47216639 
[8] -0.63537131 -0.28577363 0.13810822 
x == y 
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

3.factor因子

在R语言中,因子(factor)表示的是一个符号、一个编号或者一个等级,即,一个点。例如,人的个数可以是1,2,3,4......那么因子就包括,1,2,3,4.....还有统计量的水平的时候用到的高、中、低,也是因子,因为他是一个点。与之区别的向量,是一个连续性的值,例如,数值中有1,1.1,1.2......可以作为数值来计算,而因子则不可以。如果用我自己的理解,简单通俗来讲:因子是一个点,向量是一个有方向的范围。

  在R中,如果把数字作为因子,那么在导入数据之后,需要将向量转换为因子(factor),而因子在整个计算过程中不再作为数值,而是一个"符号"而已。

因子(Factor) 一个因子不仅包括分类变量本身还包括变量不同的可能水
平(即使它们在数据中不出现)。因子函数factor用下面的选项创建一
个因子:

factor(x, levels = sort(unique(x), na.last = TRUE),
labels = levels, exclude = NA, ordered = is.ordered(x))
levels 用来指定因子可能的水平(缺省值是向量x中互异的值);labels
用来指定水平的名字;exclude表示从向量x中剔除的水平值;ordered是
一个逻辑型选项用来指定因子的水平是否有次序。

下面有一些例子:

> factor(1:3)
[1] 1 2 3
Levels: 1 2 3
> factor(1:3, levels=1:5)
[1] 1 2 3
Levels: 1 2 3 4 5
> factor(1:3, labels=c("A", "B", "C"))
[1] A B C
Levels: A B C
> factor(1:5, exclude=4)
[1] 1 2 3 NA 5
Levels: 1 2 3 5
函数levels用来提取一个因子中可能的水平值:
> ff <- factor(c(2, 4), levels=2:5)
> ff
[1] 2 4
Levels: 2 3 4 5
> levels(ff)
[1] "2" "3" "4" "5"

4、sample()函数

sample函数可以完成随机抽样处理,其基本形式为:sample(x, size, replace = FALSE)

sample函数参数说明:

x 整体数据,以向量形式给出

size 抽取样本的数目
    replace 如果为F(默认),则是不重复抽样,此时size不能大于x的长度;如果为T,则是重复抽样,此时size允许大于x的长度

相应的示例代码如下:
 

sample(c(1:20),size=10)  #在1~20数据中不重复地随机抽取10个元素作为样本[1]  8  2 20 11 14  6 19  1 12  9sample(c(1:20),size=30,replace=T)  #重复地随机抽取30个元素作为样本[1]  8 20 12 15  8  6 13  9  2 10  7  2 11  8 17  3 16  7 11  9 15 18  9  5[25] 16  1 18  1 11  2

5、table()函数

一、table 函数对应的就是统计学中的列联表,是一种记录频数的方法,对于统计来说有非常重要的应用,下面的例子都是针对维数为2的情况举例,多维的情况是类似的

下面看一个例子:

[html]  view plain copy
  1. > ct <- data.frame(  
  2. +         Vote.for.X = factor(c("Yes", "Yes", "No", "Not Sure", "No"), levels = c("Yes", "No", "Not Sure")),  
  3. +         Vote.for.X.Last.Time =  factor(c("Yes", "No", "No", "Yes", "No"), levels = c("Yes", "No"))  
  4. +       )  
  5. > ct  
  6.   Vote.for.X Vote.for.X.Last.Time  
  7. 1        Yes                  Yes  
  8. 2        Yes                   No  
  9. 3         No                   No  
  10. 4   Not Sure                  Yes  
  11. 5         No                   No  
  12. > cttab <-table(ct)  
  13. > cttab  
  14.           Vote.for.X.Last.Time  
  15. Vote.for.X Yes No  
  16.   Yes        1  1  
  17.   No         0  2  
  18.   Not Sure   1  0  

首先我们创建了一个示例数据集合,其中我们指定我们的因子的水平,然后 table 函数则是统计所有因子对出现的情况的频数


下面看一下 cttab 的特点:

[html]  view plain copy
  1. > mode(cttab)  
  2. [1] "numeric"  
  3. > str(cttab)  
  4.  'table' int [1:3, 1:2] 1 0 1 1 2 0  
  5.  - attr(*, "dimnames")=List of 2  
  6.   ..$ Vote.for.X          : chr [1:3] "Yes" "No" "Not Sure"  
  7.   ..$ Vote.for.X.Last.Time: chr [1:2] "Yes" "No"  
  8. > summary(cttab)  
  9. Number of cases in table: 5   
  10. Number of factors: 2   
  11. Test for independence of all factors:  
  12.     Chisq = 2.9167, df = 2, p-value = 0.2326  
  13.     Chi-squared approximation may be incorrect  
  14. > attributes(cttab)  
  15. $dim  
  16. [1] 3 2  
  17.   
  18. $dimnames  
  19. $dimnames$Vote.for.X  
  20. [1] "Yes"      "No"       "Not Sure"  
  21.   
  22. $dimnames$Vote.for.X.Last.Time  
  23. [1] "Yes" "No"   
  24.   
  25.   
  26. $class  
  27. [1] "table"  


二、table对象的操作

一个必须要掌握的操作,addmargins

[html]  view plain copy
  1. > addmargins(cttab)  
  2.           Vote.for.X.Last.Time  
  3. Vote.for.X Yes No Sum  
  4.   Yes        1  1   2  
  5.   No         0  2   2  
  6.   Not Sure   1  0   1  
  7.   Sum        2  3   5  

下面取出各维度的名字,也就是各个的水平

[html]  view plain copy
  1. > dimnames(cttab)  
  2. $Vote.for.X  
  3. [1] "Yes"      "No"       "Not Sure"  
  4.   
  5. $Vote.for.X.Last.Time  
  6. [1] "Yes" "No"   

下面提取感兴趣的子表:subtable 类比 subset

subtable(tbl,subnames) tbl 感兴趣的表,subnames 一个类表,列出自己各个维度感兴趣的水平, subtable 实现如下

[html]  view plain copy
  1. subtable <- function(tbl, subnames) {  
  2.   #将 table 转换称 array 获得 table 里面的所有元素  
  3.   tblarray <- unclass(tbl)  
  4.     
  5.   #将 tblarray 以及 subnames 组合到一个list中  
  6.   dcargs <- list(tblarray)  
  7.   ndims <- length(subnames)  
  8.   for(i in 1:ndims) {  
  9.     dcargs[[i+1]] <- subnames[[i]]  
  10.   }  
  11.     
  12.   #等价与执行 dcargs[[1]][dcargs[[2]][i], dcargs[[3]][j]] i,j 取遍所有该属性的元素  
  13.   subarray <- do.call("[", dcargs)  
  14.    
  15.   #对list中的每一个属性调用 length  
  16.   dims <- lapply(subnames, length)  
  17.   subtbl <- array(subarray, dims, dimnames = subnames)  
  18.   class(subtbl) <- "table"  
  19.   return(subtbl)  
  20. }   

下面给出一个例子:可能很有用的

[html]  view plain copy
  1. > as.data.frame(cttab)  
  2.   Vote.for.X Vote.for.X.Last.Time Freq  
  3. 1        Yes                  Yes    1  
  4. 2         No                  Yes    0  
  5. 3   Not Sure                  Yes    1  
  6. 4        Yes                   No    1  
  7. 5         No                   No    2  
  8. 6   Not Sure                   No    0  

tabdom 计算table的统计频率

[html]  view plain copy
  1. tabdom <- function(tbl, k) {  
  2.   tbldf <- as.data.frame(tbl)  
  3.   freqord <- order(tabldf$Freq, decreasing=TRUE)  
  4.   dom <- tbldf[freqord, ][1:k]  
  5.   return(dom)  
  6. }  

6. summary()函数可以获取描述性统计量

可以提供最小值、最大值、四分位数和数值型变量的均值,以及因子向量和逻辑型向量的频数统计

对于glm模型summary()输出的汇总结果,如何解读是非常重要的,它直接影响得出的结论。 例如下面这样一个输出结果,该如何理解呢? Call: glm(formula = bl ~ I, family = gaussian,data = anaData) Deviance Residuals:    Min       1Q   Median      3Q      Max   -62.364 -14.278   -0.462   14.293  51.475   Coefficients:            Estimate Std. Error t value Pr(>|t|)    (Intercept)   67.067     5.766  11.632  < 2e-16 *** I             10.368      3.647  2.843  0.00521 **
根据课程所学并查阅有关参考书箱,理解如下:
一、调用 Call: glm(formula = bl ~ I, family = gaussian,data = anaData) 当创建模型时,以上代码表明glm是如何被调用。

二、残差统计量 Deviance Residuals:    Min       1Q   Median   3Q      Max   -62.364  -14.278   -0.462  14.293   51.475   残差第一四分位数(1Q)和第三分位数(Q3)有大约相同的幅度,意味着有较对称的钟形分布。

三、系数 Coefficients:            Estimate    Std. Error   t value   Pr(>|t|)    (Intercept)     67.067      5.766    11.632  < 2e-16 *** I             10.368      3.647   2.843    0.00521 **

标记为Estimate的列包含由普通最小二乘法计算出来的估计回归系数。 标记为Std. Error的列是估计的回归系数的标准误差。 从理论上说,如果一个变量的系数是0,那么该变量是无意义的,它对模型毫无贡献。然而,这里显示的系数只是估计,它们不会正好为0。因此,我们不禁会问:从统计的角度而言,真正的系数为0的可能性有多大?这是t统计量和P值的目的,在汇总中被标记为t value和 Pr(>|t|)。 P值估计系数不显著的可能性,有较大P值的变量是可以从模型中移除的候选变量。

7、



更多推荐

R语言杂七杂八的笔记

本文发布于:2024-03-05 04:49:19,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1711353.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:语言   笔记   杂七杂八

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!