求助啊,发生哈尔滨越狱事件件了

使用R做回归分析整体上是比较常规的一类数据分析内容,下面我们具体的了解用R语言做回归分析的过程。
首先,我们先构造一个分析的数据集
x&-data.frame(y=c(102,115,124,135,148,156,162,176,183,195),
var1=runif(10,min=1,max=50),
var2=runif(10,min=100,max=200),
var3=c(235,321,412,511,654,745,821,932,))
接下来,我们进行简单的一元回归分析,选择y作为因变量,var1作为自变量。
一元线性回归的简单原理:假设有关系y=c+bx+e,其中c+bx 是y随x变化的部分,e是随机误差。可以很容易的用函数lm()求出回归参数b,c并作相应的假设检验。
model&-lm(y~var1,data=x)
summary(model)
lm(formula = x$y ~ x$var1 + 1)
Residuals:
Min 1Q Median 3Q Max
-47.630 -18.654 -3.089 21.889 52.326
Coefficients:
Estimate Std. Error t value Pr(&|t|)
(Intercept) 168.2 11.023 1.96e-09
x$var1 -0.7 -1.042 0.311
Signif. codes: 0 ‘’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 30.98 on 18 degrees of freedom
Multiple R-squared: 0.05692, Adjusted R-squared: 0.004525
F-statistic: 1.086 on 1 and 18 DF, p-value: 0.3111
从回归的结果来看,p值为0.311,变量var1不不显著,正常情况下p值小于0.05则认为有高的显著性水平。
另外,R方位0.05692 距离1太远,说明两者之间不存在相关性。
我们进一步也对,y和var3做线性回归分析
model&-lm(y~var3,data=x)
summary(model)
lm(formula = y ~ var3, data = x)
Residuals:
Min 1Q Median 3Q Max
-3.0 0.5 2.1451
Coefficients:
Estimate Std. Error t value Pr(&|t|)
(Intercept) 81...19 8.45e-12
var3 0...92 1.80e-11
Signif. codes: 0 ‘’ 0.001 ‘’ 0.01 ‘’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.73 on 8 degrees of freedom
Multiple R-squared: 0.9972, Adjusted R-squared: 0.9968
F-statistic: 2801 on 1 and 8 DF, p-value: 1.802e-11
从结果来看,常数项和var3的显著性水平都非常理想,同事R方达到0.99,整个模型的拟合度很高,可以说明两者间存在强的线性相关。
接下来,我们可以利用这个模型做些预测
pre&-data.frame(var3=c(56,36))
predict(model,pre,interval="prediction",level=0.95)
1 87.91 92.05983
2 85.87 90.09560
以上是预测结果
接下来,我们进一步了解下多元线性回归,多元线性回归是在y与多个自变量之间建立模型,寻找他们之间的线性关系。
在多元回归分析过程中,由于我们不知道因变量和那几个自变量之间存在线性关系,如果一个一个的检验,整个过程将变得非常繁琐。
好在R中有自动进行逐步回归的函数,我们只要根据函数运行结果,选择合适模型,并检验各项参数就可以了。
接下来,看下具体的步骤,还是以之前的数据集作为分析样本,我们来了解下,如何进行逐步回归分析
model&-lm(y~.,data=x)
summary(model)
lm(formula = y ~ ., data = x)
Residuals:
Min 1Q Median 3Q Max
-2.1 0.8 2.3292
Coefficients:
Estimate Std. Error t value Pr(&|t|)
(Intercept) 83...567 3.08e-06
var1 -0...504 0.632
var2 -0...331 0.752
var3 0...621 1.29e-08
Signif. codes: 0 ‘’ 0.001 ‘’ 0.01 ‘’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.936 on 6 degrees of freedom
Multiple R-squared: 0.9973, Adjusted R-squared: 0.996
F-statistic: 745.2 on 3 and 6 DF, p-value: 4.191e-08
这里我们对y与所有自变量进行回归的结果来看,var1和var2的效果不显著,var3的显著性水平较高,说明这个模型并不是最优解。
mstep&-step(model)
Start: AIC=16.11
y ~ var1 + var2 + var3
Df Sum of Sq
var2 1 0.4 22.9 14.286
var1 1 1.0 23.4 14.520
var3 1 6.0 70.794
Step: AIC=14.29
y ~ var1 + var3
Df Sum of Sq
var1 1 1.0 23.9 12.727
var3 1 9.5 71.044
Step: AIC=12.73
Df Sum of Sq
var3 1 2.4 69.337
从结果的AIC现象来看,最后一个只有y和var3进行回归时,AIC值最小,(注:逐步回归过程中,AIC值越小,说明模型的拟合度越好)
依据这个信息我们就可以建立模型model&-lm(y~var3,data=x)
当然,由于数据集的相对比较简单的关系,这里逐步回归的结果比较明显,现实的情况可能更为复杂,需要我们进行进一步的检验以及手动剔除参数等操作。
阅读(...) 评论()查看: 2400|回复: 2
LINEST做回归 数据选择
想用LINEST函数做多元线性回归,返回各变量的系数 和R方。但是我的原始数据中有一些单元格是#VALUE!(因为之前公式计算中有文本)。 但LINEST在选取范围的时候对象必须都为数值,那如何能在使用LINEST函数的时候自动忽略这些非数字的值,并返还结果。 如下图
QQ图片47.jpg (51.21 KB, 下载次数: 0)
17:35 上传
到这里为止 通过论坛里的云影给我的代码 已经帮解决了.
可是在有些情况,会碰到同一行中既有数字 又有错误值,如下图,
QQ图片27.jpg (44.28 KB, 下载次数: 0)
17:41 上传
当出现这种情况时 要怎么样处理才能把整行都当做错误值来看待。(也就是排除在linest运算范围外). 所以来vba板块看是否能行得通。
附件中 标有背景颜色的是需要做回归的数据,有4组。
(78.69 KB, 下载次数: 23)
17:44 上传
点击文件名下载附件
在线等哦,各位大神帮忙看看
为什么没人理我~~~
Powered by后使用快捷导航没有帐号?
查看: 8689|回复: 7
R语言与机器学习中的回归方法学习笔记
中级会员, 积分 211, 距离下一级还需 289 积分
论坛徽章:1
中的一些方法如决策树,随机森林,SVM,由于对数据没有分布的假定等普通线性回归模型的一些约束,预测效果也比较不错,交叉验证结果也能被接受。下面以R中lars包包含数据集diabetes为例说明机器学习中的回归方法。一、数据集及交叉验证办法描述& && && & Diabetes数据集包含在R的lars包中,数据分为x,y,x2三个部分,因变量为y,数据是关于糖尿病的血液化验等指标。这个数据集最早被用在偏最小二乘回归的文章里。& && && &交叉验证采用指标NMSE来评价模型好坏。这一统计量是计算模型预测性能和基准模型的预测性能之间的比率。通常采用目标变量的平均值来作为基准模型。其取值范围通常为0~1。如果模型表现优于这个非常简单的基准模型预测,那么NMSE应明显小于1。NMSE的值越小,模型的性能就越好。NMSE的值大于1,意味着模型预测还不如简单地把所有个案的平均值作为预测值!& && & 交叉验证办法为将数据集分为5份,取4份作为训练集,1份作为测试集,共作5次,把误差平均起来作为衡量标准。选取代码如下: [plain]
n&-length(dataset)&&index1&-1:n&&index2&-rep(1:5,ceiling(n/5))[1:n]&&index2&-sample(index2,n)&&
二、回归树& && &&&决策树是通过一系列规则对数据进行分类的过程。它提供一种在什么条件下会得到什么值的类似规则的方法。决策树分为分类树和回归树两种,分类树对离散变量做决策树,回归树对连续变量做决策树。& && &基本:1.选择一个属性放置在根节点,为每个可能的属性值产生一个分支2.将样本划分成多个子集,一个子集对应于一个分支3.在每个分支上递归地重复这个过程,仅使用真正到达这个分支的样本4.如果在一个节点上的所有样本拥有相同的类别,即停止该部分树的扩展& && &构造决策树(集合划分)时选择属性:1.ID3:Information Gain2.C4.5:Gain Ratio3.CART:Gini Index& && && &在R中我们使用rpart包中的rpart()函数实现树回归。我们先把rpart包中的两个十分重要的函数介绍如下:& && &&&构建回归树的函数:rpart()用法如下:rpart(formula, data, weights, subset,na.action = na.rpart, method,& &&&model = FALSE, x = FALSE, y = TRUE, parms, control, cost, ...)主要参数说明:fomula回归方程形式:例如 y~x1+x2+x3。data数据:包含前面方程中变量的数据框(dataframe)。na.action缺失数据的处理办法:默认办法是删除因变量缺失的观测而保留自变量缺失的观测。method根据树末端的数据类型选择相应变量分割方法,本参数有四种取值:连续型“anova”;离散型“class”;计数型(泊松过程)“poisson”;生存分析型“exp”。程序会根据因变量的类型自动选择方法,但一般情况下最好还是指明本参数,以便让程序清楚做哪一种树模型。parms用来设置三个参数:先验概率、损失矩阵、分类纯度的度量方法。control控制每个节点上的最小样本量、交叉验证的次数、复杂性参量:即cp:complexitypamemeter,这个参数意味着对每一步拆分,模型的拟合优度必须提高的程度,等等。& && && & 进行剪枝的函数:prune()用法如下:prune(tree, cp, ...)主要参数说明:tree一个回归树对象,常是rpart()的结果对象。cp复杂性参量,指定剪枝采用的阈值。cp全称为complexity parameter,指某个点的复杂度,对每一步拆分,模型的拟合优度必须提高的程度,用来节省剪枝浪费的不必要的时间,R内部是怎么计算的我不知道,希望读者能够补充。 运行代码: [plain]
library(rpart.plot)&&reg&-rpart(y~.,w)&&rpart.plot(reg,type=2,faclen=T)&&
& && &&&得到回归树:
& && && & 我们可以通过print(reg)来看到树的各个节点的细节。& && && & 我们来进行交叉验证,运行代码如下: [plain]
w&-diabetes[,2:3]&&n&-length(w$y)&&index1&-1:n&&index2&-rep(1:5,ceiling(n/5))[1:n]&&index2&-sample(index2,n)&&NMSE&-rep(0,5)&&NMSE0&-NMSE&&for(i in 1:5){&&m&-index1[index2==i]&&reg&-rpart(y~.,w[-m,])&&y0&-predict(reg,w[-m,])&&y1&-predict(reg,w[m,])&&NMSE0&-mean((w$y[-m]-y0)^2)/mean((w$y[-m]-mean(w$y[-m]))^2)&&NMSE&-mean((w$y[m]-y1)^2)/mean((w$y[m]-mean(w$y[m]))^2)&&}&&
& && && &R中输出结果:& NMSE[1] 0.....7238316& NMSE0[1] 0.....3467186& & & &&&明显出现了过拟合现象,应该使用剪枝函数,对模型进行修正。& reg$cptable& && && &&&CP& && && && &&&n& && & split relerror& & xerror& && & xstd1&&0.& && &0 1...2&&0.& && &1 0...3&&0.& && &2 0...4&&0.& && &3 0...5&&0.& && &4 0...6&&0.& && &50...7&&0.& && &6 0...8&&0.& && &8 0...9&&0.& && &9 0...10 0.& &&&11 0.4133611 0.& &&&12 0.5404312 0.& &&&14 0.8883513 0.& &&&15 0.4353514 0.& &&&17 0.10011& && &&&参照上述结果,选择合适的cp值。故修正为: [plain]
reg2&-prune(reg,cp=0.025)&&rpart.plot(reg2,type=2,faclen=T)&&
& && &&&结果为:
& && && & 再次进行交叉验证(代码略)可以看到:& NMSE[1] 0.....6407927& NMSE0[1] 0.....5233709& &&&& &&&过拟合现象基本消除。
注册会员, 积分 146, 距离下一级还需 54 积分
论坛徽章:2
怎样看出出现了过度拟合?
中级会员, 积分 239, 距离下一级还需 261 积分
论坛徽章:1
感谢分享~
注册会员, 积分 174, 距离下一级还需 26 积分
论坛徽章:0
高级会员, 积分 573, 距离下一级还需 427 积分
论坛徽章:7
新手上路, 积分 2, 距离下一级还需 48 积分
论坛徽章:0
CP为什么选择0.025?
新手上路, 积分 2, 距离下一级还需 48 积分
论坛徽章:0
怎样看出出现了过度拟合?
扫一扫加入本版微信群苹果/安卓/wp
积分 518, 距离下一级还需 282 积分
权限: 自定义头衔, 签名中使用图片
道具: 彩虹炫, 涂鸦板, 雷达卡, 热点灯, 金钱卡, 显身卡, 匿名卡, 抢沙发下一级可获得
权限: 隐身
购买后可立即获得
权限: 隐身
道具: 金钱卡, 彩虹炫, 雷达卡, 热点灯, 涂鸦板
开心签到天数: 2 天连续签到: 1 天[LV.1]初来乍到
我在读入数据之后,用plm包对模型进行回归,我使用命令
ILLITRATE1&-plm(ILLITRATE~Fdexp+POP+AGRPOP+BURDEN+EXTRA+TRANSFER,
data=czfq,model=&within& ,index=c(&state&,&year&))
这步的运行貌似可以进行,可是我输入
summary(ILLITRATE1)后,运行出错,页面显示
Error in crossprod(t(X), beta) : non-conformable arguments
In addition: Warning message:
In pf(q, df1, df2, lower.tail, log.p) : NaNs produced
载入中......
鼓励学术交流
总评分:&学术水平 + 1&
热心帮助其他会员
热心帮助其他会员
总评分:&论坛币 + 15&
热心指数 + 1&
可能是数据有问题
fm&-ILLITRATE~Fdexp+POP+AGRPOP+BURDEN+EXTRA+TRANSFER
plm.results&-plm(fm,data=czfq, index=c(&state&,&year&),effect=&individual&,model=&within&)
热心帮助其他会员
总评分:&论坛币 + 15&
您好,我现在也用R的plm包分析面板数据,也遇到了和你一样的问题,请问你是怎样解决的呢?急急急,在线等,万分感谢!!!
无限扩大经管职场人脉圈!每天抽选10位免费名额,现在就扫& 论坛VIP& 贵宾会员& 可免费加入
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
如有投资本站或合作意向,请联系(010-);
邮箱:service@pinggu.org
投诉或不良信息处理:(010-)
京ICP证090565号
论坛法律顾问:王进律师Logistic回归分析时几个需要注意的问题 - 简书
Logistic回归分析时几个需要注意的问题
1、关于样本含量的问题
logistic回归分析中,到底样本量多大才算够,这一直是个令许多人困惑的问题。尽管有的人从理论角度提出了logistic回归分析中的样本含量估计,但从使用角度来看多数并不现实。直到现在,这一问题尚无广为接受的答案。根据国外一些大牛的看法,如果样本量小于100,logistic回归的最大似然估计可能有一定的风险,如果大于500则显得比较充足。当然,样本大小还依赖于变量个数、数据结构等条件。
一般认为,每一个自变量至少要10例结局保证估计的可靠性。注意:这里是结局例数,而不是整个样本例数。(如果你有7个自变量,那至少需要70例研究结局,否则哪怕你有1000例,而结局的例数只有10例,依然显得不足。)
2、关于混杂因素的理解
混杂因素一般可以通过三个方面确定:一是该因素(吸烟)对结局(心绞痛)有影响;二是该因素(吸烟)在分析因素(基因)中的分布不均衡;三是从专业角度来判断,即该因素不能是分析因素与结局中间的一个环节。也就是说,不能是分析因素引起该因素,通过该因素再引起结局。
3、关于交互作用的理解
交互作用有的书中也叫效应修饰,是指在该因素的不同水平(不同取值),分析因素与结局的的关联大小有所不同。在某一水平上(如取值为0)可能分析因素对结局的效应大,而在另一个水平上(如取值为1)可能效应小。
4、关于自变量的形式
理论上,Logistic回归中的自变量可以是任何形式,定量资料和定性资料均可。但我觉得在数据分析时更倾向于自变量以分类的形式进入模型,因为这样更方便解释。
例如体重,如果直接进行分析,结果提示的是每增加1Kg发生某病的危险。而现实中多数疾病可能对体重增加1Kg不敏感,或者我们医务人员不关心增加1Kg所发生的变化,而关注的是胖子是不是比瘦子有更高的发病风险。So,很多情况下将连续自变量转化为分类变量可能会有更合理的结果解释。
5、关于标准误过大的问题
我有过这样的经历,logistic回归分析结果中某个自变量的OR值特别大(如&999.999)或特别小(&0.001),可信区间也特别宽(如&0.001~&999.999)。明显觉得有问题,但始终摸不着头脑,后来,发现可能是数据出了问题。
对于此类问题,可能有以下原因:
该变量某一类的例数特别少,如性别,男性有100人,女性有2人,可能会出现这种情形。
空单元格(zero cell count),如性别与疾病的关系,所有男性都发生了疾病或都没有发生疾病,这时候可能会出现OR值无穷大或为0的情形。
完全分离(complete separation),对于某自变量,如果该自变量取值大于某一值时结局发生,当小于该值时结局都不发生,就会出现完全分离现象。如年龄20~、30~、40~、50~四个年龄段,如果40岁以上的人全部发生疾病,40岁以下的人全部不发病,就就产生了完全分离现象,也会出现一个大得不可理喻的标准误。
多重共线性问题,多重共线性会产生大的标准误。
6、几个错误的做法
关于logistic回归分析,某些“大牛”如是说:“把因变量和自变量往软件里一放,一运行就出来结果了”,那么简单,我只能呵呵了!
(1)多分类变量不看其与logitP的关系直接进入模型
有时候你会发现某些多分类自变量应该有意义但怎么也得不到有统计学意义的结果,那你最好看一下这些自变量与logitP是神马关系,是直线关系吗?如果不是,请设置虚拟变量(SPSS叫做哑变量)后再进入模型。
(2)变量赋值相反
有时候,你会发现你的结果恰好与别人的相反。于是乎你不得不陷入深深的苦恼中,当揪头发、拍脑袋都无济于事是,看看是不是因变量赋值问题。如患病(赋值1)和不患病(赋值0)弄成了患病(赋值0)和不患病(赋值1)。
注意:SPSS拟合模型时默认取值水平高的为阳性结果,而SAS与其相反。
(3)参数估计无统计学意义
有时候会发现所有自变量参数估计均无统计学意义,是不是很让你沮丧?(不管你沮不沮丧,反正我都看在眼里)如果你认为从专业角度不大可能所有自变量都无统计学意义,那你可以看下是不是标准误太大导致的Wald卡方检验失效,如果是,不妨换用似然比检验重新分析。如果不是,那你默哀,如果你知道原因请告诉我!
(4)只看参数检验结果
看到参数结果就认为分析结束了,这就是典型的只管工作完成,不理会工作质量。很少有人喜欢看拟合优度的结果,尽管拟合优度确实有用,尤其是在模型比较时。拟合优度通俗来讲就是看你求得的模型与实际数据的符合程度。logistic回归中有很多指标可用于拟合优度的评价,如Pearson卡方、Deviance、AIC、似然比统计量等。只要你不是非得追究它们的来历,这些指标的用法还是比较简单的,通常用于模型的比较。
我的存在证明了统计分析是一件容易的事情。

我要回帖

更多关于 东北越狱事件 的文章

 

随机推荐