白天写不了文章,用来学C了。下面是C程序设计语言里的一个例子,用于统计输入的一些特性。其中简单的循环都把我弄混了,记录一下。
#include <stdio.h> | |
#define IN 1 /*光标在单词中时状态为1*/ | |
#define OUT 0 /*光标在单词外,即完成一个单词*/ | |
main() | |
{ | |
int c, nl, nw, nc, state; | |
printf("对输入的行、单词、字符进行计数\n"); | |
state = OUT; | |
nl = nw = nc = 0; | |
while ((c = getchar()) != EOF){ | |
++nc; | |
if (c == '\n'){ | |
++nl; | |
printf("nl+1\n"); /*检验循环是否运行*/ | |
} | |
if (c == ' ' || c == '\n' || c == '\t'){ | |
state = OUT; | |
printf("test\n"); /*检验循环是否运行*/ | |
} | |
else if (state == OUT){ | |
state = IN; | |
++nw; | |
printf("nw+1\n"); /*检验循环是否运行*/ | |
} | |
} | |
printf("以上输入包含:\n行数:"); | |
printf("%8d\n", nl); | |
printf("单词数:"); | |
printf("%6d\n", nw); | |
printf("字符数:"); | |
printf("%6d\n", nc); | |
} |
运行程序尝试输入些文字就能清晰看出程序运行的过程了。
* if-else语句中有且仅有一条(if或else)被执行。
* windows 终端终止程序用Ctrl+Z,再按Enter。
用到[multcomp] (http://cran.r-project.org/web/packages/multcomp/index.html)包,并非方差分析完全教程
install.packages("multcomp")
library(multcomp)
data(warpbreaks)
str(warpbreaks)
## 'data.frame': 54 obs. of 3 variables:
## $ breaks : num 26 30 54 25 70 52 51 26 67 18 ...
## $ wool : Factor w/ 2 levels "A","B": 1 1 1 1 1 1 1 1 1 1 ...
## $ tension: Factor w/ 3 levels "L","M","H": 1 1 1 1 1 1 1 1 1 2 ...
单因素(tension)三水平(L,M,H)方差分析
#### Shapiro-Wilk 正态性检验
with(warpbreaks, tapply(breaks, tension, shapiro.test))
## $L
##
## Shapiro-Wilk normality test
##
## data: X[[1L]]
## W = 0.9058, p-value = 0.07265
##
##
## $M
##
## Shapiro-Wilk normality test
##
## data: X[[2L]]
## W = 0.9428, p-value = 0.3232
##
##
## $H
##
## Shapiro-Wilk normality test
##
## data: X[[3L]]
## W = 0.9191, p-value = 0.1247
with(warpbreaks, tapply(breaks, tension, function(x) hist(x, freq = F)))
library(xtable)
amod <- aov(breaks ~ tension, data = warpbreaks)
anov.tb <- xtable(summary(amod), caption = "方差分析表")
print(anov.tb, type = "html", caption.placement = getOption("xtable.caption.placement",
"top"))
<TABLE border=1>
方差分析表 Df Sum Sq Mean Sq F value Pr(> F) tension 2 2034.26 1017.13 7.21 0.0018 Residuals 51 7198.56 141.15</TABLE>
Tukey’s multiple comparisons tests: The “Honestly Significantly Different” (HSD) test proposed by the statistician John Tukey is based on what is called the “studentized range distribution.”
M与L差异显著,H与L差异极显著,H与M差异不显著
tuk <- glht(amod, linfct = mcp(tension = "Tukey"))
summary(tuk)
##
## Simultaneous Tests for General Linear Hypotheses
##
## Multiple Comparisons of Means: Tukey Contrasts
##
##
## Fit: aov(formula = breaks ~ tension, data = warpbreaks)
##
## Linear Hypotheses:
## Estimate Std. Error t value Pr(>|t|)
## M - L == 0 -10.00 3.96 -2.53 0.0384 *
## H - L == 0 -14.72 3.96 -3.72 0.0014 **
## H - M == 0 -4.72 3.96 -1.19 0.4631
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## (Adjusted p values reported -- single-step method)
(tuk.base <- TukeyHSD(amod, "tension"))
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = breaks ~ tension, data = warpbreaks)
##
## $tension
## diff lwr upr p adj
## M-L -10.000 -19.56 -0.4402 0.0385
## H-L -14.722 -24.28 -5.1624 0.0014
## H-M -4.722 -14.28 4.8376 0.4631
plot(print(confint(tuk)))
plot(tuk.base)
残差 vs 拟合值可以检查残差是否有趋势或残差是否满足一致性;正态Q-Q图检查残差是否满足正态性。
plot(amod, which = 1:2)
双因素(tension和wool)多水平(t:L,M,H; w:A,B)方差分析
多因素方差分析中,数据要求满足因素水平交叉内的正态性,然而水平交叉内的自由度往往较小,直接的正态性检查不可操作,因此一般由残差的正态性来反映,见残差分布。
with(warpbreaks, for (i in c("L", "H", "M")) {
hist(warpbreaks[wool == "A" & tension == i, "breaks"], xlab = paste0("breaks A",
i), main = NULL)
})
with(warpbreaks, for (i in c("L", "H", "M")) {
hist(warpbreaks[wool == "B" & tension == i, "breaks"], xlab = paste0("breaks B",
i), main = NULL)
})
比较单因素,双因素中tension的p值小一点点,wool不显著。
library(xtable)
amod2 <- aov(breaks ~ tension + wool, data = warpbreaks)
anov.tb <- xtable(summary(amod2), caption = "方差分析表")
print(anov.tb, type = "html", caption.placement = getOption("xtable.caption.placement",
"top"))
<TABLE border=1>
方差分析表 Df Sum Sq Mean Sq F value Pr(> F) tension 2 2034.26 1017.13 7.54 0.0014 wool 1 450.67 450.67 3.34 0.0736 Residuals 50 6747.89 134.96</TABLE>
tension同样是M与L差异显著,H与L差异极显著,H与M差异不显著
tuk2 <- glht(amod2, linfct = mcp(tension = "Tukey"))
summary(tuk2)
##
## Simultaneous Tests for General Linear Hypotheses
##
## Multiple Comparisons of Means: Tukey Contrasts
##
##
## Fit: aov(formula = breaks ~ tension + wool, data = warpbreaks)
##
## Linear Hypotheses:
## Estimate Std. Error t value Pr(>|t|)
## M - L == 0 -10.00 3.87 -2.58 0.0335 *
## H - L == 0 -14.72 3.87 -3.80 0.0011 **
## H - M == 0 -4.72 3.87 -1.22 0.4474
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## (Adjusted p values reported -- single-step method)
(tuk.base2 <- TukeyHSD(amod2, "tension"))
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = breaks ~ tension + wool, data = warpbreaks)
##
## $tension
## diff lwr upr p adj
## M-L -10.000 -19.35 -0.6466 0.0336
## H-L -14.722 -24.08 -5.3688 0.0011
## H-M -4.722 -14.08 4.6312 0.4474
plot(print(confint(tuk2)))
plot(tuk.base2)
残差 vs 拟合值可以检查残差是否有趋势或残差是否满足一致性;正态Q-Q图检查残差是否满足正态性。
plot(amod2, which = 1:2)
(此教程本就是留作自用的,直接从原博客复制,时间上的也不再修改)
本人非常小白,以下都是从网上看来的,自己用了,有时行有时不行(可能是自己某些地方弄错了),安了几台之后终于好一点了,总结一下容易错的地方,留作以后查看。
Esri官网上10.1已经可以试用了,但是要破解估计还有一段时间,官网也挂出了sp4的补丁,这里也能下。本人是从9.3转到10.0的,开始下过中文的(起初以为会方便,装了后看着不怎么习惯),后来换回英文(有问题容易搜索),我自己安的可能是sp1。
可以到这里下载。怎么工作的本人不懂,总之就是 覆盖5个文件(另外有一个是最后复制进去bin里),导入两个注册表。
这个在GIS的安装文件里就有,有人提议先装这个再装主程序会比较顺利。装完后停掉许可服务。
这个只需点击安装文件里的项就行,最后可以把一些有需要的也一并安上。
1.复制5个文件到bin文件夹,license manager默认路径安装的就是(C:\Program Files\ArcGIS\License10.0\bin);关键是9.xlic.lic那个文件(也可以是其它名称如service.lic),可以自己用注册机制作,做的时候注意选择正确的feature和version;修改文件里的this-host为你的计算机名(不能是中文);
2.打开bin文件夹里的lmtools.exe进行设置,只要选择license file就行,就是bin里的那个.lic文件(注册机做的);
3.开启服务,不行就停掉再开,多试几次就可以了;
4.检查license,出现最后一行就行了,如果不行,自己再做一个.lic;
5.打开ArcGIS administrator设置(确保license manager已关);
6.设置下面几个,许可管理器记得改为localhost;
7.刷新一下就能看到许可了;
8.复制AfCore.dll文件进bin文件夹;导入两个注册表文件
OK!试用,好运……